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 ?!?
1234567$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 ?
12345678910111213141516foreach
(
$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