php imap obtener de la dirección de correo electrónico

¿Cómo recupero la dirección de correo electrónico de un correo electrónico con imap_open?

Si se conoce el nombre del remitente, obtengo el nombre del remitente en lugar de la dirección de correo electrónico si utilizo el parámetro ‘de’.

Código: http://gist.github.com/514207

$header = imap_headerinfo($imap_conn, $msgnum); $fromaddr = $header->from[0]->mailbox . "@" . $header->from[0]->host; 

En el peor de los casos, puede analizar los encabezados usted mismo con algo como:

  

$ matches contendrá 3 matrices:

 $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) 

Obtuve esto de: http://www.php.net/manual/en/function.imap-fetchheader.php#82339

Luché con esto también, pero el siguiente funciona:

 // Get email address $header = imap_header($imap, $result); // get first mails header echo '

Name: ' . $header->fromaddress . '

'; echo '

Email: ' . $header->senderaddress . '

';

Había usado imap_fetch_overview () pero el imap_header () me dio toda la información que necesitaba.

Tuve el mismo problema que tú …. tuve que armarlo todo, no sé por qué es tal gonzoware.

Ejemplo no probado aquí:

 $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 '

Name / Email Address: ' . $header->from[0]->personal ." ". $header->from[0]->mailbox ."@". $header->from[0]->host. '

'; } imap_close($mbox);

imap_fetch_overview podría ser lo que estás buscando: http://www.php.net/manual/en/function.imap-fetch-overview.php

Un ejemplo de uso se puede encontrar aquí: http://davidwalsh.name/gmail-php-imap , específicamente

echo $overview[0]->from;

Esta función es simple, pero tiene limitaciones. Una versión más exhaustiva está en imap_headerinfo ( http://www.php.net/manual/en/function.imap-headerinfo.php ) que puede devolver matrices detalladas de todos los datos del encabezado.

Tuve problemas hasta que descubrí que $ header es una matriz de objetos stdClass. Las siguientes 2 líneas funcionaron:

  $header=imap_fetch_overview($imap,$countClients,FT_UID); $strAddress_Sender=$header[0]->from; 

Código de trabajo completo con un ejemplo en línea

Extraiga la lista de direcciones de correo electrónico de la bandeja de entrada usando PHP e IMAP inbox-using-php-and-imap

Creo que todo lo que necesitas es solo copiar el guion.

También estoy publicando aquí dos funciones principales del código (gracias al comentario de Eineki)

  function getAddressText(&$emailList, &$nameList, $addressObject) { $emailList = ''; $nameList = ''; foreach ($addressObject as $object) { $emailList .= ';'; if (isset($object->personal)) { $emailList .= $object->personal; } $nameList .= ';'; if (isset($object->mailbox) && isset($object->host)) { $nameList .= $object->mailbox . "@" . $object->host; } } $emailList = ltrim($emailList, ';'); $nameList = ltrim($nameList, ';'); } function processMessage($mbox, $messageNumber) { echo $messageNumber; // get imap_fetch header and put single lines into array $header = imap_rfc822_parse_headers(imap_fetchheader($mbox, $messageNumber)); $fromEmailList = ''; $fromNameList = ''; if (isset($header->from)) { getAddressText($fromEmailList, $fromNameList, $header->from); } $toEmailList = ''; $toNameList = ''; if (isset($header->to)) { getAddressText($toEmailList, $toNameList, $header->to); } $body = imap_fetchbody($mbox, $messageNumber, 1); $bodyEmailList = implode(';', extractEmail($body)); print_r( ',' . $fromEmailList . ',' . $fromNameList . ',' . $toEmailList . ',' . $toNameList . ',' . $bodyEmailList . "\n" ); }