kostenloser Webspace werbefrei: lima-city


imap_fetch_overview - keine Absender-Adresse ?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    btausch

    btausch hat kostenlosen Webspace.

    Hallo

    ich möchte eine Übersicht von Emails aus einem Postfach ausgeben
    aber mit imap_fetch_overview() bekomme ich als 'from' sehr oft
    nur den Ansender-Name und nicht die Absender Email-Adresse ?!?

    $mbox = imap_open($h_host,$m_user,$m_pass) or die("Could not open Mailbox");
    
    $mcheck = imap_check($mbox);
    
    $mbox_overview = imap_fetch_overview($mbox,"1:{$mcheck->Nmsgs}",0); 
    
    // --- usw.


    muss ich dafür jede einzelne Message-NR auch noch imap_headerinfo() aufrufen ?

    foreach($mbox_overview as $msgitem) { 
       print "<br />".$msgitem->msgno."\n";
       print "<br />".$msgitem->date."\n";
       print "<br />".$msgitem->subject."\n";
       print "<br />".$msgitem->from."\n";   // --- hier kommt nur der Absender Name --- 
       print "<br />\n";
    
       $mid = $msgitem->msgno; 
       $msg_header = imap_headerinfo($mbox, $mid);
       print '<pre>'.  print_r($msg_header->from, true) . '</pre>
    
       $from_email = $msg_header->from[0]->mailbox . '@' . $msg_header->from[0]->host; 
    
       print "<br />".$from_email."\n";   // --- hier kommt die Absender Email-Adresse--- 
       print "<br />\n";
    }


    gibt es keine Übersicht -Liste, die bereits die Absender Email-Adresse enthält ?
    .. weil bei sehr vielen Emails kann das sonst die Ressourcen / Laufzeit sprengen.

    EDIT

    Problem gelöst ....

    in den Daten steht z.B:
    [from] => Donald Duck <donald_duck@test.de>


    aber mit print der Daten
    print $msgitem->from;
    wird das in den spitzen Klammern nicht sichtbar abgezeigt

    mit
    print htmlentities($msgitem->from);
    wird auch die Absender Email-Adresse angezeigt
    ist also doch da ...
    ich kann die "reine" Email-Adresse dann heraus holen mit

    $mftxt = (string)$msgitem->from; 
    
    if (strpos($mftxt,'<') !== false) {
    preg_match('/<(.*?)>/', $msgitem->from, $matches);
    $mail_from = $matches[1]; 
    }
    else {
    $mail_from = $mftxt; 
    }


    oder jemand ne bessere Idee ?!

    EDIT .. ja ...

    $mftxt = (string)$msgitem->from; 
    
    if (strpos($mftxt,'<') !== false) {
    $mp1 = strpos($mftxt,'<')+1; 
    $mp2 = strpos($mftxt,'>')-1; 
    $mail_from = substr($mftxt, $mp1 ,-1);
    }
    else {
    $mail_from = $mftxt; 
    }


    :)


    Beitrag zuletzt geändert: 30.9.2013 12:39:57 von btausch
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!