Ich habe PHP die E-Mail-Lese-Funktionen für den Großteil der zwei Tage gekämpft. Ich schreibe ein Skript, um E-Mails von einem Postfach zu lesen und Anhänge auf dem Server zu speichern. Wenn Sie jemals etwas Ähnliches getan haben, können Sie meinen Schmerz verstehen: PHP spielt nicht gut mit E-Mail!Wie kann ich E-Mail-Anhänge auf dem Server in PHP speichern?
Ich habe mit dem POP3-Server verbunden und ich kann die Dateien iterieren. Hier ist eine grobe Gliederung 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 feststecke. 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 ist. Ich brauche es als Bild! Ich habe mehrere Klassen im Internet bombardieren sehen, die behaupten, die erforderliche Zauberei zu machen. Ich kann keine von ihnen zur Arbeit bekommen. Ich verstehe nicht, warum ich das so schwer finde!
In Kürze, ich bin auf der Suche nach etwas, das eine rohe MIME-Zeichenfolge in echte Daten verwandeln kann.
haben Sie überprüft, was die Anlage Codierung ist? – kender
Hey, kannst du ein vollständigeres Snippet posten? Ich kann nicht scheinen, es zu arbeiten, bc ich bin nicht sicher, wo $ überblick kommt von – st4ck0v3rfl0w
Ich habe das gleiche Problem wie Ihr. Ich fand einen guten Artikel, und ich denke, es könnte Ihnen helfen http://www.linuxscope.net/articles/mailAttachmentsPHP.html genießen Sie es :) – Hassan