Как получить адрес электронной почты из электронной почты с помощью imap_open?
Если имя отправителя известно, я получаю имя отправителя вместо адреса электронной почты, если я использую параметр «from».
Код: http://gist.github.com/514207
$header = imap_headerinfo($imap_conn, $msgnum); $fromaddr = $header->from[0]->mailbox . "@" . $header->from[0]->host;
В худшем случае вы можете самостоятельно разобрать заголовки:
<?php $headers=imap_fetchheader($imap, $msgid); preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $headers, $matches); ?>
$ matches будет содержать 3 массива:
$matches[0] are the full-lines (such as "To: user@user.com\r\n") $matches[1] will be the header (such as "To") $matches[2] will be the value (user@user.com)
Получил это от: http://www.php.net/manual/en/function.imap-fetchheader.php#82339
Я тоже сражался с этим, но следующие работы:
// Get email address $header = imap_header($imap, $result); // get first mails header echo '<p>Name: ' . $header->fromaddress . '<p>'; echo '<p>Email: ' . $header->senderaddress . '<p>';
Я использовал imap_fetch_overview (), но imap_header () дал мне всю необходимую мне информацию.
Имел такой же вопрос, как и вы …. должен был собрать его вместе, не знаю, почему это такой гонзоуэр.
Непритянутый пример здесь:
$mbox = imap_open(....) $MN=$MC->Nmsgs; $overview=imap_fetch_overview($mbox,"1:$MN",0); $size=sizeof($overview); for($i=$size-1;$i>=0;$i--){ $val=$overview[$i]; $msg=$val->msgno; $header = imap_headerinfo ( $mbox, $msg); echo '<p>Name / Email Address: ' . $header->from[0]->personal ." ". $header->from[0]->mailbox ."@". $header->from[0]->host. '<p></br>'; } imap_close($mbox);
imap_fetch_overview
может быть тем, что вы ищете: http://www.php.net/manual/en/function.imap-fetch-overview.php
Пример использования можно найти здесь: http://davidwalsh.name/gmail-php-imap , в частности
echo $overview[0]->from;
Эта функция проста, но имеет ограничения. Более исчерпывающая версия находится в imap_headerinfo
( http://www.php.net/manual/en/function.imap-headerinfo.php ), которая может возвращать подробные массивы всех данных заголовка.
У меня возникли проблемы, пока я не заметил, что заголовок $ представляет собой массив объектов stdClass. Следующие две строки работали:
$header=imap_fetch_overview($imap,$countClients,FT_UID); $strAddress_Sender=$header[0]->from;