Hallo ,
Ich hole mir mit der POP3-Klasse hier im Forum (von TBT) "Code-Schnipsel" E-Mails vom Server ab. Diese sind ja nahe zu unleserlich. Jetzt parse ich die Mails mit einer maildecoder/mime-decoder Klasse von mlemos. Funktioniert alles soweit. Ich bekomme die Absender-Mail heraus, den Betreff das Absendedatum, nur den Inhalt der Mail verschluckt mir diese Klasse...
Kennt sich jemand mit der aus und kann mir weiterhelfen... oder habt ihr eine bessere Alternative zu diesem Parser um eine Mail die vom POP3-Server kommt leserlich zu gestalten bzw. die wichtigen Infos herauszu filtern?
Für Hilfe wäre ich euch sehr dankbar .
EDIT: Oke ich hab mir nun selber kurz einen kleinen "Body-Decoder" geschrieben. Er erwartet den Body des Mails (nur den Body) als Array. Er zerlegt den Body in einzelne Parts und speichert zu ihnen alle Mime-Infos die er aus dem Array lesen kann. Der Code für die, die ihn mal testen wollen (Parameter 1: Body des Mails als Array, Parameter 2: Blöcke mit den angegebenen Content-Typen zurückgeben (Array)... z.B.: array('text/plain','text/html') -> gibt html und text zurück:
Ich hole mir mit der POP3-Klasse hier im Forum (von TBT) "Code-Schnipsel" E-Mails vom Server ab. Diese sind ja nahe zu unleserlich. Jetzt parse ich die Mails mit einer maildecoder/mime-decoder Klasse von mlemos. Funktioniert alles soweit. Ich bekomme die Absender-Mail heraus, den Betreff das Absendedatum, nur den Inhalt der Mail verschluckt mir diese Klasse...
Kennt sich jemand mit der aus und kann mir weiterhelfen... oder habt ihr eine bessere Alternative zu diesem Parser um eine Mail die vom POP3-Server kommt leserlich zu gestalten bzw. die wichtigen Infos herauszu filtern?
Für Hilfe wäre ich euch sehr dankbar .
EDIT: Oke ich hab mir nun selber kurz einen kleinen "Body-Decoder" geschrieben. Er erwartet den Body des Mails (nur den Body) als Array. Er zerlegt den Body in einzelne Parts und speichert zu ihnen alle Mime-Infos die er aus dem Array lesen kann. Der Code für die, die ihn mal testen wollen (Parameter 1: Body des Mails als Array, Parameter 2: Blöcke mit den angegebenen Content-Typen zurückgeben (Array)... z.B.: array('text/plain','text/html') -> gibt html und text zurück:
PHP-Code:
function parse_mail_body($body_array,$content_return) {
// empty vars
$part_mime_info = array();
$part_msg_lines = array();
$part = array();
$act_part = 0;
$return = array();
foreach($body_array as $ln) {
if(preg_match('/^(-{2,})(_?|\w+)(=*)(_?)(\w+)(.*)/',$ln,$match)) {
//echo "<font color=\"red\">$ln</font><br />";
$part[$act_part]['mime_info'] = $part_mime_info;
$part[$act_part]['msg'] = $part_msg_lines;
if(empty($part_mime_info)) { unset($part[$act_part]); } else { $act_part += 1; }
$part_mime_info = array();
$part_msg_lines = array();
} else {
$info_ln = explode(":",$ln);
if(count($info_ln) > 1) {
// Check if it is a MIME-Info-Line
if(in_array(strtolower(trim($info_ln[0])),array('content-type','content-transfer-encoding','content-disposition','content-description'))) {
// Wenn content-type dann noch mehr auseinandernehmen
if(strtolower(trim($info_ln[0])) == 'content-type') {
$temp = explode(";",$info_ln[1]);
$part_mime_info[strtolower(trim($info_ln[0]))] = trim($temp[0]);
unset($temp[0]);
foreach($temp as $nfo) {
$nfo = explode("=",$nfo);
if(count($nfo) == 2) {
$part_mime_info[strtolower(trim($nfo[0]))] = trim($nfo[1]);
}
}
} else {
$part_mime_info[strtolower(trim($info_ln[0]))] = trim($info_ln[1]);
}
} else {
$part_msg_lines[] = $ln;
}
} else {
$part_msg_lines[] = $ln;
}
}
}
foreach($part as $p) {
if(isset($p['mime_info']['content-type']) && (in_array($p['mime_info']['content-type'],$content_return) || count($content_return) == 0)) {
$return[] = $p;
}
}
return $return;
}