imap_fetch_overview - keine Absender-Adresse ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
absender
adresse
aufrufen
bessere idee
code
date
datum
einzelne message
email
holen
host
jemand
laufzeit
liste
match
not
postfach
ressource
spitzen klammern
string
-
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
wird das in den spitzen Klammern nicht sichtbar abgezeigtprint $msgitem->from;
mit
wird auch die Absender Email-Adresse angezeigtprint htmlentities($msgitem->from);
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage