bastiglasl
Erfahrenes Mitglied
Ich sitz grad an nem Webmail und lasse mir von verschiedenen Pop-Konten Emails auslesen und in ner Datenbank speichern. Soweit so gut...
Wie kann ich die Emails wieder auslesen, sodaß bei Plain-Nachrichten die Formatierung beibehalten wird. Momentan laufen die Mails in ein Blob-Feld, ist das Falsch? Kann es sein, daß ich die Mails irgendwie kodieren muß, damit ich sie richtig formatiert zurückbekomme?
Dasselbe Problem hab ich nicht nur mit dem Mailbody, sondern auch mit Anhängen.
Hab ich irgeneinen größeren Fehler gemacht?
Wie kann ich die Emails wieder auslesen, sodaß bei Plain-Nachrichten die Formatierung beibehalten wird. Momentan laufen die Mails in ein Blob-Feld, ist das Falsch? Kann es sein, daß ich die Mails irgendwie kodieren muß, damit ich sie richtig formatiert zurückbekomme?
Dasselbe Problem hab ich nicht nur mit dem Mailbody, sondern auch mit Anhängen.
Hab ich irgeneinen größeren Fehler gemacht?
Code:
function pop($UserID, $popserver, $username, $password, $host_webmail, $user_webmail, $pwd_webmail, $database_webmail) {
$Server = "{".$popserver."/pop3:110}" ;
$mbox = imap_open($Server, $username, $password);
if ($mbox) {
echo("<b>Sie sind mit dem Postfach verbunden!</b><P><P>");
} else { die(imap_last_error()); }
for ($i = 1; $i <= imap_num_msg($mbox); $i++) {
$header = imap_header($mbox, $i);
$Structure = imap_fetchstructure($mbox, $i);
/* ?><PRE><? print_r($header) ?></PRE><? */
/* ?><PRE><? print_r($Structure) ?></PRE><? */
$SenderInfo = imap_fetchbody($mbox, $i, 0);
$answered = $header->Answered;
$ccaddress = $header->ccaddress;
$ccMailbox = "";
$ccHost = "";
for ($j = 0; $j < count($header->cc); $j++) {
$ccMailbox .= $header->cc[$j]->mailbox.";";
$ccHost .= $header->cc[$j]->host.";";
}
$ccMailbox = substr($ccMailbox, 0, strlen($ccMailbox)-1);
$ccHost = substr($ccHost, 0, strlen($ccHost)-1);
$bccaddress = $header->bccaddress;
$bccMailbox = "";
$bccHost = "";
for ($j = 0; $j < count($header->cc); $j++) {
$bccMailbox .= $header->bcc[$j]->mailbox.";";
$bccHost .= $header->bcc[$j]->host.";";
}
$bccMailbox = substr($bccMailbox, 0, strlen($bccMailbox)-1);
$bccHost = substr($bccHost, 0, strlen($bccHost)-1);
/* print_r ($ccMailbox); */
$date = $header->Date;
$fromaddress = $header->fromaddress;
$fromPersonal ="";
$fromHost = "";
$fromMailbox ="";
for ($j = 0; $j < count($header->from); $j++) {
$fromPersonal .= $header->from[$j]->personal.";";
$fromMailbox .= $header->from[$j]->mailbox.";";
$fromHost .= $header->from[$j]->host.";";
}
/* print_r($fromPersonal); */
$fromPersonal = substr($fromPersonal, 0, strlen($fromPersonal)-1);
$fromMailbox = substr($fromMailbox, 0, strlen($fromMailbox)-1);
$fromHost = substr($fromHost, 0, strlen($fromHost)-1);
$MailDate = $header->MailDate;
$message_id = $header->message_id;
$Msgno = $header->Msgno;
$recent = $header->Recent;
$replytoaddress = $header->reply_toaddress;
$replytoPersonal ="";
$replytoMailbox ="";
$replytoHost ="";
for ($j = 0; $j < count($header->reply_to); $j++) {
$replytoMailbox .= $header->reply_to[$j]->personal.";";
$replytoPersonal .= $header->reply_to[$j]->mailbox.";";
$replytoHost .= $header->reply_to[$j]->host.";";
}
$replytoMailbox = substr($replytoMailbox, 0, strlen($replytoMailbox)-1);
$replytoPersonal = substr($replytoPersonal, 0, strlen($replytoPersonal)-1);
$replytoHost = substr($replytoHost, 0, strlen($replytoHost)-1);
$senderaddress = $header->senderaddress;
$senderMailbox ="";
$senderPersonal ="";
$senderHost ="";
for ($j = 0; $j < count($header->sender); $j++) {
$senderMailbox .= $header->sender[$j]->mailbox.";";
$senderPersonal .= $header->sender[$j]->personal.";";
$senderHost .= $header->sender[$j]->host.";";
}
$senderMailbox = substr($senderMailbox, 0, strlen($senderMailbox)-1);
//$senderPersonal = substr($senderPersonal, 0, strlen($senderPersonal)-1);
$senderHost = substr($senderHost, 0, strlen($senderHost)-1);
$Size = $header->Size;
$subject = $header->Subject;
$toaddress = $header->toaddress;
$toaddress = $header->senderaddress;
$toMailbox ="";
$toHost ="";
for ($j = 0; $j < count($header->to); $j++) {
$toMailbox .= $header->to[$j]->mailbox.";";
$toHost .= $header->to[$j]->host.";";
}
$toMailbox = substr($toMailbox, 0, strlen($toMailbox)-1);
$toHost = substr($toHost, 0, strlen($toHost)-1);
$udate = $header->udate;
$unseen = $header->Unseen;
$Flagged = $header->Flagged;
$Deleted = $header->Deleted;
$Draft = $header->Draft;
$body = ( imap_body ($mbox, $i));
$body = ereg_replace("'","\'",$body);
$body = ereg_replace('"',"\"",$body);
$subject = ereg_replace("'","\'",$subject);
$subject = ereg_replace('"',"\"",$subject);
$SenderInfo = ereg_replace("'","\'",$SenderInfo);
$SenderInfo = ereg_replace('"',"\"",$SenderInfo);
$Werte = "answered".chr(2).$answered.chr(2)."ccaddress".chr(2).$ccaddress.chr(2)."ccMailbox".chr(2).$ccMailbox.chr(2)."ccHost".chr(2).$ccHost.chr(2)."date".chr(2).$date.chr(2)."fromaddress".chr(2).$fromaddress.chr(2)."fromPersonal".chr(2).$fromPersonal.chr(2)."fromMailbox".chr(2).$fromMailbox.chr(2)."fromHost".chr(2).$fromHost.chr(2)."MailDate".chr(2).$MailDate.chr(2)."message_id".chr(2).$message_id.chr(2)."Msgno".chr(2).$Msgno.chr(2)."recent".chr(2).$recent.chr(2)."replytoaddress".chr(2).$replytoaddress.chr(2)."replytoPersonal".chr(2).$replytoPersonal.chr(2)."replytoMailbox".chr(2).$replytoMailbox.chr(2)."replytoHost".chr(2).$replytoHost.chr(2)."senderaddress".chr(2).$senderaddress.chr(2)."senderMailbox".chr(2).$senderMailbox.chr(2)."senderPersonal".chr(2).$senderPersonal.chr(2)."senderHost".chr(2).$senderHost.chr(2)."Size".chr(2).$Size.chr(2)."subject".chr(2).$subject.chr(2)."toaddress".chr(2).$toaddress.chr(2)."toMailbox".chr(2).$toMailbox.chr(2)."toHost".chr(2).$toHost.chr(2)."udate".chr(2).$udate.chr(2)."unseen".chr(2).$unseen.chr(2)."Flagged".chr(2).$Flagged.chr(2)."Deleted".chr(2).$Deleted.chr(2)."Draft".chr(2).$Draft.chr(2)."body".chr(2).$body.chr(2)."UserNr".chr(2).$UserID.chr(2)."SenderInfo".chr(2).$SenderInfo.chr(2)."bccaddress".chr(2).$bccaddress.chr(2)."bccMailbox".chr(2).$bccMailbox.chr(2)."bccHost".chr(2).$bccHost;
$pruefUID = selectString($host_webmail, $user_webmail, $pwd_webmail, $database_webmail, "Mail", "message_id", "message_id", $message_id);
if ($pruefUID != $message_id) {
SectionEintrag($mbox, $i, $Structure, $message_id, $host_webmail, $user_webmail, $pwd_webmail, $database_webmail);
insertString ($host_webmail, $user_webmail, $pwd_webmail, $database_webmail, "Mail", $Werte);
}
}
imap_close($mbox);
}
function SectionEintrag($mbox, $Msgno, $Structure, $message_id, $host_webmail, $user_webmail, $pwd_webmail, $database_webmail) {
if (! $Structure->parts) {
$type = $Structure->type;
$subtype = $Structure->subtype;
$encoding = $Structure->encoding;
$bytes = $Structure->bytes;
$attribute = $Structure->parameters[0]->attribute;
$value = $Structure->parameters[0]->value;
$disposition = $Structure->disposition;
$section = imap_fetchbody($mbox, $Msgno, 1);
$section = ereg_replace("'","\'",$section);
$section = ereg_replace('"',"\"",$section);
$Werte = "type".chr(2).$type.chr(2)."subtype".chr(2).$subtype.chr(2)."encoding".chr(2).$encoding.chr(2)."bytes".chr(2).$bytes.chr(2)."attribute".chr(2).$attribute.chr(2)."value".chr(2).$value.chr(2)."disposition".chr(2).$disposition.chr(2)."Section".chr(2).$section.chr(2)."message_id".chr(2).$message_id.chr(2)."SectionID".chr(2)."1";
insertString($host_webmail, $user_webmail, $pwd_webmail, $database_webmail, "Sections", $Werte);
} else {
for ($zz = 0; $zz < (count($Structure->parts)); $zz++) {
$type = $Structure->parts[$zz]->type;
$subtype = $Structure->parts[$zz]->subtype;
$encoding = $Structure->parts[$zz]->encoding;
$bytes = $Structure->parts[$zz]->bytes;
$attribute = $Structure->parts[$zz]->parameters[0]->attribute;
$value = $Structure->parts[$zz]->parameters[0]->value;
$disposition = $Structure->parts[$zz]->disposition;
?><PRE><? print_r($Structure) ?></PRE><?
$section = imap_fetchbody($mbox, $Msgno, $zz+1);
/* print($section);
echo("<hr>"); */
$section = ereg_replace("'","\'",$section);
$section = ereg_replace('"',"\"",$section);
$Werte = "type".chr(2).$type.chr(2)."subtype".chr(2).$subtype.chr(2)."encoding".chr(2).$encoding.chr(2)."bytes".chr(2).$bytes.chr(2)."attribute".chr(2).$attribute.chr(2)."value".chr(2).$value.chr(2)."disposition".chr(2).$disposition.chr(2)."Section".chr(2).$section.chr(2)."message_id".chr(2).$message_id.chr(2)."SectionID".chr(2).$zz;
insertString($host_webmail, $user_webmail, $pwd_webmail, $database_webmail, "Sections", $Werte);
}
}
}