E-Mail von POP3 parsen/decoden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • E-Mail von POP3 parsen/decoden

    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:

    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;

    Zuletzt geändert von pascal007; 26.12.2009, 20:25.
Lädt...
X