Frage

PHP wurde kämpft E-Mail-Lesefunktionen für den besseren Teil von zwei Tagen

Ich habe. Ich schreibe ein Skript E-Mails aus einer Mailbox zu lesen und alle Anhänge auf den Server speichern. Wenn Sie schon einmal etwas ähnliches getan haben, könnte man meinen Schmerz verstehen: PHP nicht gut spielen mit E-Mail

Ich habe mit dem POP3-Server verbunden ist, und ich kann die Dateien iterieren. Hier ist eine grobe Skizze des Codes:

if (!$mbox = imap_open ("{myserver.com:110/pop3/notls}INBOX", "u", "p"))
    die ('Cannot connect/check mail! Exiting');

if ($hdr = imap_check($mbox)) 
    $msgCount = $hdr->Nmsgs;
else 
    die ("Failed to get mail");

foreach ($overview as $message) {
    $msgStruct = imap_fetchstructure($mbox, $message->msgno);

    // if it has parts, there are attachments that need reading
    if ($msgStruct->parts) {
        foreach ($msgStruct->parts as $key => $part) {
            switch (strtoupper($part->subtype)) {
                case 'GIF': case 'JPEG':case 'PNG':

                    //do something - but what?!

                    break;
            }
        }
    }
}

Ich habe markiert, wo ich bin stecken. Ich kann imap_fetchbody($mbox, $message->msgno, $key+1) verwenden, aber das wird mir ein Bündel von Daten wie folgt aus:

/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8S
EhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEU
Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAAR
CAHiAi0DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
...

Ich bin zu der Annahme verleiten, dass diese MIME-Daten sind. Ich brauche es als ein Bild! Ich habe mehrere Klassen um das Internet zu bombardieren gesehen, dass die erforderliche wizardry zu behaupten. Ich kann nicht von ihnen zu arbeiten. Ich verstehe nicht, warum ich das so schwer zu finden bin!

Kurz gesagt: , ich bin auf der Suche nach etwas, das einem rohen MIME-String in reale Daten verwandeln kann.

War es hilfreich?

Lösung

fand ich eine kurze Anleitung, wie man E-Mails mit PHP zu behandeln. hier

Am unteren Ende dieser Seite gibt es einen Befestigungskörper echo:

if (substr($ContentType,0,4) == "text") {
echo imap_qprint($fileContent);
} else {
echo imap_base64($fileContent);
}

Ich denke, das ist das, was man braucht ...

(edit: in Ihrem Fall, wenn es Bild immer können Sie den if Teil überspringen Und natürlich die Datei speichern, anstatt sie zu Echo.)

Andere Tipps

MIME-Daten sind Base64-codiert, so dass ich denke, Sie sollten sie entschlüsseln können base64_decode mit

Sie können die imap_base64 Funktion und nur ausgegeben, dass zu eine Datei, oder verwenden Sie imap_savebody

Zend Framework enthält Zend_Mail, die das Lesen Mail-Nachrichten machen sollte viel einfacher, und Zend_Mime, die ich glauben kann, eine mehrteilige MIME-Nachricht in eine vernünftige Datenstruktur analysieren.

http://framework.zend.com/manual/en /zend.mail.read.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top