kostenloser Webspace werbefrei: lima-city


Emails abfragen?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    h2o

    h2o hat kostenlosen Webspace.

    Ich frage mich mit welcher Websprache man Email-Konten auch abfragen kann.

    Emails senden geht ja einfach mit PHP mail().
    Aber welche M?glichkeiten hat man, wenn's ums Abfragen geht?

    Mit welcher Programmiersprache kann man das erm?glichen?

    Vielen Dank,
    H2O
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Die Idee find ich noch edel :-) Auf der Page im Admin-Bereich automatisch auch gleich die Mails abrufen... und sich nicht immer ?berall einloggen oder ins Outlook oder sonst wo rein m?ssen....:thumb:
  4. 0******a

    Mails abfragen geht auch ?ber PHP. Musst nur alles "per Hand" programmieren. Schau in der PHP Dokumentation nach Socket-Funktionen. Du musst dann manuell eine TCP/IP Verbindung zu Port 110 des POP3 Servers aufbauen und dann einfach mit dem Mailserver per POP3 Protokoll kommunizieren. Ist relativ einfach.
  5. Autor dieses Themas

    h2o

    h2o hat kostenlosen Webspace.


    Mails abfragen geht auch ?ber PHP.


    Das ist gut. :biggrin:


    Musst nur alles "per Hand" programmieren.


    H??


    Schau in der PHP Dokumentation nach Socket-Funktionen.


    Meinst du http://www.php-manual.de/de/ref.sockets.php ?
    Wei?t du vielleicht, wie man sowas macht und hast ein Beispiel?


    Du musst dann manuell eine TCP/IP Verbindung zu Port 110 des POP3 Servers aufbauen und dann einfach mit dem Mailserver per POP3 Protokoll kommunizieren. Ist relativ einfach.


    Habe jetzt nix von dem verstanden, aber hoffe, dass ich das noch schaffen werde...

    W?re nett, wenn du mal genauer beschreiben k?nntest, wie das geht, auf der Seite steht n?hmlich nix dazu.

    Danke, H2O
  6. du brauchst halt einen email server! also nen smpt server oder?
    und mit dem musst du einfach nur kommunizieren, wie mit ner datenbank, mal ganz eifnach gesagt
    aber wie genau alles von statten geht weiss ich acuh nich genau, w?rd mich aber interessieren :cool:
  7. 0******a

    Das was du machen willst, kann man in zwei Teile aufteilen:
    1. Wie kommuniziere ich mit einem POP3 Server?
    2. Wie stelle ich mit PHP eine Verbindung zu dem Server her, mit dem ich dann kommuniziere.

    Zu Frage 1:
    Schau dir die Definition des POP unter http://www.rfc-editor.org/rfc/rfc1939.txt an. Ausprobieren kannst du das Ganze mit telnet. Einfach mit "telnet hostname port" auf den POP3 Server verbinden und das ausprobieren, was in der Definition von POP3 erl?utert ist. Wenn du Infos zu hostname und port brauchst, schaust du einfach in die Konfiguration deines eMail Programmes. Dort sind die ben?tigten Daten aufgef?hrt.

    Wenn du dich dann mit POP3 auskennst (ist nicht schwer, es gibt nur eine Hand voll Befehle), dann kannst du dich der zweiten Frage zuwenden.

    Zu Frage 2:
    Jetzt musst du in PHP das machen, was du vorher ?ber telnet gemacht hast. Das heisst, das du in PHP programmieren musst, dich zu dem POP3 Server zu verbinden, dem Daten zu schicken und die von dem POP3 Server gesendeten Daten zu empfangen und auszuwerten. Zum Schluss musst du dann noch die Verbindung schliessen.


    Nachtrag:
    Der von dir rausgesuchte Link auf die PHP Doku ist genau das, was ich meinte.

    @lucas:
    SMTP ist nur f?r den Versand bzw. den Empfang von eMails zust?ndig. Zum Abfragen von eMails benutzt man POP3 oder in gr?sseren Firmen bzw. im Intranet meist IMAP

    Beitrag ge?ndert am Fri, 14.01.2005 21:23 von 0-checka
  8. cool
    hast du vieleicht nen kleines script oder so an dem du das erl?utern k?nntest, denn dadurch lernt man schnelelr find ich :biggrin:

    ?: sry bin dem link noch nich gefolgt
    naja hier f?r alle, da der beitrag ja schon besteht:
    <?php
    error_reporting (E_ALL);

    /* Das Skript wartet auf hereinkommende Verbindungsanforderungen. */
    set_time_limit (0);

    /* Die implizite Ausgabe wird eingeschaltet, so dass man sieht, was gesendet wurde. */
    ob_implicit_flush ();

    $address = '192.168.1.53';
    $port = 10000;

    if (($sock = socket_create (AF_INET, SOCK_STREAM, 0)) < 0) {
    echo "socket_create() fehlgeschlagen: Grund: " . socket_strerror ($sock) . "\n";
    }

    if (($ret = socket_bind ($sock, $address, $port)) < 0) {
    echo "socket_bind() fehlgeschlagen: Grund: " . socket_strerror ($ret) . "\n";
    }

    if (($ret = socket_listen ($sock, 5)) < 0) {
    echo "socket_listen() fehlgeschlagen: Grund: " . socket_strerror ($ret) . "\n";
    }

    do {
    if (($msgsock = socket_accept($sock)) < 0) {
    echo "socket_accept() fehlgeschlagen: Grund: " . socket_strerror ($msgsock) . "\n";
    break;
    }
    /* Anweisungen senden. */
    $msg = "\nWillkommen auf dem PHP Testserver. \n" .
    "Um zu beenden, geben Sie 'quit' ein. Um den Server herunterzufahren, geben Sie 'shutdown' ein.\n";
    socket_write($msgsock, $msg, strlen($msg));

    do {
    if (FALSE === ($buf = socket_read ($msgsock, 2048))) {
    echo "socket_read() fehlgeschlagen: Grund: " . socket_strerror ($ret) . "\n";
    break 2;
    }
    if (!$buf = trim ($buf)) {
    continue;
    }
    if ($buf == 'quit') {
    break;
    }
    if ($buf == 'shutdown') {
    socket_close ($msgsock);
    break 2;
    }
    $talkback = "PHP: Sie haben '$buf' eingegeben.\n";
    socket_write ($msgsock, $talkback, strlen ($talkback));
    echo "$buf\n";
    } while (true);
    socket_close ($msgsock);
    } while (true);

    socket_close ($sock);
    ?>

    Beitrag ge?ndert am 14.01 21:35 von lucas9991
  9. 0******a

    @lucas:
    Das ist ein Skript f?r einen Server (sieht man ganz leicht an dem Aufruf von listen()). Bei der eMail Abfrage brauchst du einen Client, da werden in dem Skript paar andere Befehle aufgerufen.

    Hier erstmal was zum Ausprobieren per POP3. Die fett geschriebenen Dinge habe ich eingegeben.
    Aufgebaut wurde die Verbindung per "telnet pop.gmx.net 110".
    Einige Dinge sind per XXXX unkenntlich gemacht.


    +OK GMX POP3 StreamProxy ready <4610.1105735846@mp013>
    user XXXXXXXX
    +OK May I have your password, please?
    pass XXXXXXXX
    +OK mailbox has 6 messages (139292 octets)
    list
    +OK mailbox has 6 messages (139292 octets)
    1 1851
    2 6146
    3 12529
    4 30757
    5 84965
    6 3044
    .
    top 1 0
    +OK message follows
    Return-Path: <wwwrun@p15158966.pureserver.info>
    X-Flags: 1001
    Delivered-To: GMX delivery to XXXXXXXXXXX
    Received: (qmail 3990 invoked by uid 65534); 9 Nov 2004 17:56:39 -0000
    Received: from p15158966.pureserver.info (EHLO p15158966.pureserver.info) (82.165.41.13)
    by mx0.gmx.net (mx049) with SMTP; 09 Nov 2004 18:56:39 +0100
    Received: by p15158966.pureserver.info (Postfix, from userid 30)
    id 212B514001BF; Tue, 9 Nov 2004 18:56:39 +0100 (CET)
    To: XXXXXXXXXX@gmx.de
    Subject: XXXXXXXXXXXXXXXXXXXX
    Reply-To: XXXXXXXXX@c-plusplus.de
    From: XXXXXXXX1@c-plusplus.de
    Message-ID: <1cbe385367c7e6039e5f1aebd8cef594@www.c-plusplus.de>
    MIME-Version: 1.0
    Content-type: text/plain; charset=iso-8859-1
    Content-transfer-encoding: 8bit
    Date: Tue, 9 Nov 2004 18:56:38 +0100
    X-Priority: 3
    X-MSMail-Priority: Normal
    X-Mailer: PHP
    X-MimeOLE: Produced By phpBB2
    X-GMX-Antivirus: -1 (not scanned, may not use virus scanner)
    X-GMX-Antispam: 0 (Mail was not recognized as spam)

    .
    quit
    +OK bye


    Probiert mal bisschen mit den POP3 Befehlen bisschen rum. Die anderen Befehle und die Bedeutung der Codes sind wie gesagt unter http://www.rfc-editor.org/rfc/rfc1939.txt nachzuschauen. Danach einfach mal nach Tutorials im C/C++ Bereich schauen, wo Netzwerk und/oder Sockets im Titel auftaucht, um zu sehen, wie Netzwerkverbindungen ?ber TCP/IP grob funktionieren. Damit verschafft ihr euch erstmal einen ?berblick. Wenn ihr dann selbst was zusammengestrickt habt, dann kann man ja mal r?berschauen.
  10. http://pear.php.net/package/Net_POP3

    Warum das Rad st?ndig neu erfinden?
  11. 0******a

    Ich hab mir das Ding mal angeschaut. Das hat zwar ein gewaltigen Overhead, aber wen das nicht interessiert, f?r den ist es wohl richtig. Wenn man sich mit OO auskennt und mit fremden Quellcode gut zurechtkommt, dann kann man sich da auch einiges abschauen. Ich fand den Code zumindest relativ ?bersichtlich.
  12. Autor dieses Themas

    h2o

    h2o hat kostenlosen Webspace.

    OK, ich werde mich dann mal einlesen.

    H?tte n?hmlich nicht gedacht, dass das auch mit PHP m?glich ist...

    Vielen Dank euch.

    Bitte nicht als Spam ansehen, aber es ist nun mal unh?flich, wenn ich dazu nix mehr gesagt h?tte...

    H2O
  13. derturbohummel

    derturbohummel hat kostenlosen Webspace.

    Mit PHP kann man so gut wie alles machen. Es ist halt immer nur die Frage, wie gro? der Aufwand daf?r ist.
  14. masterblaster2

    masterblaster2 hat kostenlosen Webspace.

    Es gibt ?brigens auch eigens eine Reihe von Funktionen zum Abfragen von POP3- Postf?chern:

    http://ca3.php.net/manual/de/ref.imap.php

    Das ?berpfr?fen auf neue E-Mails und eine Auflistung des Postfachs ist relativ einfach.

    Kompliziert wird es, wenn man E-Mails abfragen will, die neben Nur-Text Anh?nge und unterschiedliche MIME Types enthalten.

    Dies ist ein Teil meines eigenen online E-Mail Programms.

    Das Script ruft ein Postfach auf und l?dt vorhandene Mails auf den eigenen Server:


    <html>
    <head><title>RECIEVE</title>
    <style type="text/css">
    <!--
    body {margin:2px;badding:0px;background-color:#00ff00;font-family:arial;font-weight:bold;margin:10px;}
    -->
    </style>
    </head>
    <body>

    <?php

    $mail = "info";
    $index = "recieve.php";
    define('index', $index);
    $atts = 0;
    require("sbase.php"); // Eigene Datenbankfunktionen werden eingebunden
    require("abook.php"); // Eigenes Adressbuch wird eingebunden


    function selfrefresh($timeout, $rec_nr) {
    print '<script type="text/javascript">
    <!--';
    if($rec_nr != 0) $append = '?rec_nr='.$rec_nr;
    else $append = '';
    print '
    function go() {
    self.location.href = "'.index.$append.'";
    }
    window.setTimeout("go()", '.$timeout.');
    //-->
    </script>';
    }

    require('login/login.php');

    $box = imap_open ($server, $user, $password)
    or die("can't connect: " . imap_last_error() . selfrefresh('3000', 0));




    function save_attached($fname, $text) {
    $file = "fdir/recieved/".time."/".$fname;

    $fp = fopen($file, "a");
    fwrite($fp, $text);
    fclose($fp);
    }



    function save_body($text,$ext) {
    $file = "recieved/".time.".$ext";

    $fp = fopen($file, "a");
    fwrite($fp, $text);
    fclose($fp);
    }

    function save_imap($mail_content) {
    $file = "imap/recieved/".time;
    $fp = fopen($file, "a");
    fwrite($fp, $mail_content);
    fclose($fp);
    }




    $time = 'sim'.time();
    define('time', $time);




    $check = imap_mailboxmsginfo($box);

    if ($check) $news = $check->Unread;
    else $news = 0;

    if($news > "0") {

    print '<p />'.$news.' Mail(s) in the mailbox.<p />';

    $simap = imap_body($box, '1');
    save_imap($simap);


    $msgnr = "1";
    if(!isset($rec_nr)) $rec_nr = "1";



    if(!is_dir("fdir/recieved/$time")) mkdir("fdir/recieved/$time");



    $struct = imap_fetchstructure($box, "1");

    $message = array();
    $header = imap_header($box, "1");
    $message['subject'] = trim($header->subject);
    $message['sender'] = filter($header->fromaddress);
    $message['reciepent'] = trim($header->toaddress);
    $message['cc'] = trim($header->ccaddress);
    $message['date'] = trim($header->date);

    $spam = sbase_open('databases/spam');
    if(ereg($message['sender'], $spam)) {
    print "A message on the POP3 server was classed spam and will be deleted";
    imap_delete ($box, "1");
    imap_expunge($box);
    imap_close($box);

    $slog = fopen("databases/spam.log", "a");
    fwrite($slog, "\n".$message['sender'].' '.$message['subject'].' '.$message['date']);
    fclose($slog);

    selfrefresh('3000', 0);
    print '</body></html>';
    exit;
    }

    print "Downloading message number $rec_nr sent by ".$message['sender']."...";
    flush();

    $parts = $struct -> parts;
    $size = $struct -> bytes;
    $num_parts = count($parts);
    if($num_parts < 1) {
    save_body($simap, 'txt');
    }
    for($x=0;$x<count($parts);$x++) {
    $spart = $parts[$x];
    $type = $spart -> type;
    $encoding = $spart -> encoding;

    $y = $x + 1;

    $body = imap_fetchbody($box, "1", $y);
    if($encoding == "3") $body = imap_base64($body);


    $ifparameters = $spart -> ifparameters;
    if($ifparameters != false) {
    $parameters = $spart -> parameters;
    while(list($key, $val) = each($parameters)) {
    if($val -> attribute == NAME) $filename = $val -> value;
    }
    }

    if(!isset($filename)) {
    $filename = $time;
    save_body($body, 'txt');
    }
    else {
    save_attached($filename, $body);
    $atts = $atts + 1;
    }
    }

    $sbase_entry = "\n$time|#|".$message['sender']."|#|".$message['reciepent']."|#|".$message['subject']."|#|".$size."|#|".$message['date']."|#|".$message['cc']."|#|".$atts."|#|1";
    sbase_put('databases/recieved', $sbase_entry);

    imap_delete ($box, "1");
    imap_expunge($box);

    $rec_nr = $rec_nr + 1;
    selfrefresh('3000', $rec_nr);
    flush();

    }
    else {
    if(isset($rec_nr)) print 'All downloads completed.
    <script type="text/javascript">
    <!--
    width = screen.width - 230;
    height = screen.height - 50;
    inbox = window.open("inbox.php","inbox","width="+width+",height="+height+",left=225,top=0,status=no,scrollbars=yes,resizable=yes");
    inbox.focus();
    //-->
    </script>';
    else print '<img src="imgs/world.png" alt="world" style="border:0px;float:right;" />No new messages.';
    print "<p />Last check:<br />".date("dS of F Y h:i:s A");
    print selfrefresh('300000', 0);
    }

    imap_close($box);

    ?>

    </body>
    </html>
  15. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!