PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Den Anhang einer Mail auslesen. (http://www.selfphp.de/forum/showthread.php?t=5137)

Viktor M. 04.08.2003 16:26:43

Den Anhang einer Mail auslesen.
 
Hallo,
ich möchte via PHP einen POP3-Account abrufen. Ein passendes Script
dafür habe ich schon gefunden, mit dem ich $empfaenger, $betreff,
$absender, $absender_email und $body erhalte. Mein Problem ist jetzt
noch, dass ich nach einer Lösung suche, wie ich einen Anhang auslesen
kann, der in der Mail ist, und dann in einem ordner auf dem Server abspeichern kann.. Es handelt sich dabei immer um JPEG's.
Ich habe nun schon mit Klassen von phpclasses.org und pear-modulen ausprobiert, aber bisher hat nichts geklappt. wäre wirklich super wenn mir jemand helfen könnte.


Das Skript, das ich habe lautet:

// POP3-Server
$host = "Mail-Server";
$port = "110";
// User-Daten
$user = "Benutzername";
$passwort = "passwort";
// Connect to Mailbox
$mailbox = imap_open("{".$host."}INBOX","$user","$passwort");
// Mail holen
$check = imap_check($mailbox);
$Anzahl_Nachrichten = $check->Nmsgs;
$Anzahl_Neuer_Nachrichten = $check->Recent;
// Mail auslesen
$nMessages = imap_num_msg($mailbox);
for($i = 1; $i <= $nMessages; $i++)
{
$header = imap_header($mailbox, $i);
$datum = $header->Date;
$m_id = $header->message_id;
$empfaenger = $header->toaddress;
$betreff = $header->subject;
$absender = $header->from[0]->personal;
$absender_email =
$header->from[0]->mailbox."@".$header->from[0]->host;
$body = imap_body($mailbox,$i);
$text_koerper = $body;
$fheader = imap_fetchheader($mailbox,$i);
// Mail in DB speichern.
$re1 = mysql_query("INSERT INTO tabelle SET
empfaenger='$empfaenger',
absender='$absender',
absender_email='$absender_email',
text_koerper='$text_koerper'")or die(mysql_error());
}

// Mailbox schließen
imap_close($mailbox);

Ben20 04.08.2003 16:37:00

Prinzipiell ist das nicht weiter schwer, Du musst den Header der Mail analysieren und das Boundary auslesen, dann musst Du den Body an den Boundarys exploden, so hast Du schonmal die Einzelnen Teile (versch. Anhänge, Text, usw) der Mail, von den Anhängen (der erste Teil des Bodys ist immer der Text) musst Du jetzt noch alles auslesen, was sich vor der Leerzeile in diesem Abschnitt befindet. Dort stehen Dinge wie Content Type usw. Alles nach der Leerzeile ist dann der eigentliche Inhalt des Anhangs (sprich die Datei) - dies musst Du alles in eine neue Datei schreiben und mit entsprechenden Namen speichern. Schon hast Du Deine Bilder auf dem Server,

Viktor M. 04.08.2003 16:44:00

hallo ben,
"nicht weiter schwer" <-- *augen reib*

sorry, ich weiß, dass man eigentlich nicht nach kompletten skript fragt, aber könntest du mir den part des auslesens in mein bestehedes skript einbauen?

ich such jetzt schon seit 4 wochen nach einer lösung. habe echt schon fast auf der ganzen welt gefragt ;) ... und bekomme immer nur eine antwort, dass ich doch selber irgendwo gucken soll und dass es ja super schwer ist, weil die mime-types so kompliziert wären.
aber ich habe jetzt schon sachen ausprobiert, aber einfach keinen plan mehr wie ich das anstellen soll, damit es klappt. du wärst echt meine letzte rettung, da ich die ganzen anderen foren mit meiner fragerrei echt voll nerve ;)

ich wär dir echt dankbar !!!!

Ben20 04.08.2003 16:48:29

Ich hab sowas noch daheim rumliegen, allerdings ist es nicht ganz ausgereift! Ich schicks Dir demnächst mal zu, wenn Du mir deine E-Mailadresse zumailst (an viktor.m@nb-kreativ.de ), dass kann aber noch ein wenig dauern! Ansonsten, schau Dir mal diverse Webmailscripte an, die müssen das ja auch irgendwie gelöst haben.

Der Andy 05.08.2003 11:23:12

http://www.phpguru.org/mime.mail.html

http://www.php-center.de/faq/faq-mail.html

evtl. hilfts :(

Viktor M. 07.08.2003 12:50:45

Mhm. Gibt es vielleicht ein Buch, dass so etwas beschreibt?


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:14:36 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.