php imap get from email address

35,311

Solution 1

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

Solution 2

I battled with this as well but the following works:

// Get email address
$header = imap_header($imap, $result); // get first mails header
echo '<p>Name: ' . $header->fromaddress . '<p>';
echo '<p>Email: ' . $header->senderaddress . '<p>';

I had used imap_fetch_overview() but the imap_header() gave me all the information I needed.

Solution 3

Worst case, you can parse the headers yourself with something like:

<?php
$headers=imap_fetchheader($imap, $msgid);
preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $headers, $matches);
?>

$matches will contain 3 arrays:

$matches[0] are the full-lines (such as "To: [email protected]\r\n")
$matches[1] will be the header (such as "To")
$matches[2] will be the value ([email protected])

Got this from: http://www.php.net/manual/en/function.imap-fetchheader.php#82339

Solution 4

Had same issue as you....had to piece it together, don't know why it's such gonzoware.

Untested example here:

$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);
Share:
35,311
Frederik Heyninck
Author by

Frederik Heyninck

Updated on July 09, 2022

Comments

  • Frederik Heyninck
    Frederik Heyninck almost 2 years

    How do I retrieve the email address from an email with imap_open?

    If the sender name is known I get the sender name instead of the email address if I use the 'from' parameter.

    Code: http://gist.github.com/514207

  • Frederik Heyninck
    Frederik Heyninck almost 14 years
    This is my header: MIME-Version: 1.0 Received: by 10.227.37.212; Wed, 21 Jul 2010 12:21:40 -0700 (PDT) Date: Wed, 21 Jul 2010 12:21:40 -0700 Message-ID: Subject: Customise Gmail with colours and themes From: Gmail Team To: Frederik Heyninck Content-Type: multipart/alternative; boundary=0016e6d5fc53164fb6048beab667 So no email address. That is the problem.
  • beingalex
    beingalex almost 12 years
    How would this be achieved using Zend_Mail ?
  • dlo
    dlo almost 12 years
    Isn't Zend_Mail for composing and sending emails? This question is about extracting an address from a received message, in this case accessed via imap.
  • Eineki
    Eineki over 6 years
    While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - From Review
  • Eugene Lycenok
    Eugene Lycenok over 6 years
    Done. Appreciate the review!
  • Fanky
    Fanky over 4 years
    This gives me sender's name, not their email