Grüß euch,
einfach just4fun, um mich mit imap_open mal auseinanderzusetzen möchte ich mal Versuchen meine E-Mails via PHP auszulesen.
Soweit ist das kein Problem.
Der Betreff, Absender sogar der Inhalt werden richtig dar gestellt.
Das Problem fängt an wenn sich in der Mail ein Anhang befindet.
Hat die Mail einen Anhang, wird zwar dieser gespeichert aber der E-Mail Inhalt, in dem Fall der Text nicht ausgegeben.
Ich habe die PHP Doku schon bemüht und einiges Versucht aber noch keine Lösung gefunden.
Der Übersicht habe ich das ganze Script mal in eine Datei gepackt
Ich hoffe mir kann da jemand weiter helfen.
einfach just4fun, um mich mit imap_open mal auseinanderzusetzen möchte ich mal Versuchen meine E-Mails via PHP auszulesen.
Soweit ist das kein Problem.
Der Betreff, Absender sogar der Inhalt werden richtig dar gestellt.
Das Problem fängt an wenn sich in der Mail ein Anhang befindet.
Hat die Mail einen Anhang, wird zwar dieser gespeichert aber der E-Mail Inhalt, in dem Fall der Text nicht ausgegeben.
Ich habe die PHP Doku schon bemüht und einiges Versucht aber noch keine Lösung gefunden.
Der Übersicht habe ich das ganze Script mal in eine Datei gepackt
PHP:
function get_decode_value($message, $encoding)
{
switch ($encoding) {
case 0:
case 1:
$message = imap_8bit($message);
break;
case 2:
$message = imap_binary($message);
break;
case 3:
case 5:
$message = imap_base64($message);
break;
case 4:
$message = imap_qprint($message);
break;
}
return $message;
}
$srv = '{imap.gmail.com:993/imap/ssl}INBOX';
$usr = 'xxxx';
$pw = 'xxxx';
$mailbox = imap_open($srv, $usr, $pw) or die('Cannot connect to Mailserver: ' . imap_last_error());
$emails = imap_search($mailbox, 'ALL');
foreach ($emails as $m) {
$header = imap_headerinfo($mailbox, $m);
$messages = imap_fetchbody($mailbox, $m, 1);
$structure = imap_fetchstructure($mailbox, $m);
// Attachment
$message = array();
$message["attachment"]["type"][0] = "text";
$message["attachment"]["type"][1] = "multipart";
$message["attachment"]["type"][2] = "message";
$message["attachment"]["type"][3] = "application";
$message["attachment"]["type"][4] = "audio";
$message["attachment"]["type"][5] = "image";
$message["attachment"]["type"][6] = "video";
$message["attachment"]["type"][7] = "other";
// Damit die Nachricht korrekt dargestellt werden kann muss ermittelt werden wie diese kodiert ist
$part = $structure->parts[1];
// Attachment
$att = '';
for ($jk = 1; $jk <= imap_num_msg($mailbox); ++$jk) {
// Prüfen ob Anhang
if (isset($structure->parts)) {
$parts = $structure->parts;
$fpos = 2;
for ($i = 1; $i < count($parts); $i++) {
$part = $parts[$i];
if (isset($part->disposition) == "INLINE") {
$message["type"][$i] = $message["attachment"]["type"][$part->type] . "/" . strtolower($part->subtype);
$message["subtype"][$i] = strtolower($part->subtype);
$ext = $part->subtype;
$params = $part->dparameters;
$filename = $part->dparameters[0]->value;
$body = "";
$data = "";
$body = imap_fetchbody($mailbox, $jk, $fpos);
$inhalt1 = get_decode_value($body, $part->type);
//Schreibe Anhänge in Datei
$fp = fopen('file/' . $part->dparameters[0]->value, 'w+');
fwrite($fp, $inhalt1);
fclose($fp);
$att .= $part->dparameters[0]->value . ';';
$ticket_array['attachment'] = $att;
$fpos++;
}
}
}
}
if ($part->encoding == 3) {
$messages = imap_base64($messages);
} else if ($part->encoding == 1) {
$messages = imap_8bit($messages);
} else {
$messages = imap_qprint($messages);
}
echo 'Betreff: ' . imap_utf8($header->subject) . '<br>';
echo 'Absender: ' . $header->fromaddress . '<br>';
echo 'Nachricht: ' . $messages . '<hr>';
}
Ich hoffe mir kann da jemand weiter helfen.