2010-08-08 10 views

Antwort

3

Im schlimmsten Fall können Sie die Header, sich mit so etwas wie analysieren:

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

Streichhölzer $ 3 Arrays enthalten:

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

habe diese von: http://www.php.net/manual/en/function.imap-fetchheader.php#82339

+0

Das ist mein Header: MIME-Version: 1.0 empfangen: von 10.227.37.212; Mi, 21 Jul 2010 12:21:40 -0700 (PDT) Datum: Mi, 21 Jul 2010 12:21:40 -0700 Nachrichten-ID: Betreff: Anpassen von Google Mail mit Farben und Designs Von: Gmail Team An: Frederik Heyninck Content-Type: mehrteilig/alternativ; Grenze = 0016e6d5fc53164fb6048beab667 Also keine E-Mail-Adresse. Das ist das Problem. –

3

ich damit kämpfte als gut, aber die folgenden Werke:

// 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 verwendet imap_fetch_overview hatte(), aber die imap_header() gab mir alle Informationen, die ich brauchte.

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

Wie würde dies mit Zend_Mail erreicht werden? – beingalex

+0

Ist Zend_Mail nicht zum Komponieren und Senden von E-Mails gedacht? Bei dieser Frage geht es darum, eine Adresse aus einer empfangenen Nachricht zu extrahieren, in diesem Fall über imap. – dlo

1

Hatte das gleiche Problem wie Sie .... musste es zusammen, weiß nicht, warum es solche gonzoware ist.

Ungeprüfte Beispiel hier:

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

hatte Probleme, bis ich, dass die $ header gefleckt ist ein Array von stdClass Objekte. Die folgenden zwei Linien gearbeitet:

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

Vollarbeits Code mit einem Online-Beispiel

Extract email addresses list from inbox using PHP and IMAP Posteingang-using-php-und-imap

Ich glaube, alles, was Sie brauchen, ist nur das Skript kopieren .

veröffentliche ich zwei Kernfunktionen des Codes auch hier (dank Eineki Kommentar)

  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" 
      ); 
     } 
+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/18526256) – Eineki

+0

Fertig. Schätzen Sie die Bewertung! –