2013-09-10 1 views
3

Использование PHP IMAP Я могу загружать все вложения сообщений и т. Д. Из gmail. Но когда в адресе есть несколько получателей, я получаю только один адрес. Позвольте мне объяснить это более четко.PHP IMAP извлекает всех получателей в адрес

Предположим, у меня есть адрес электронной почты [email protected], откуда я загружаю все сообщения. Теперь, когда [email protected] отправляет мне электронное письмо, я получаю [email protected] в адресной книге, используя функцию imap_headerinfo. Но когда [email protected] отправляет почту на [email protected] и [email protected], то я не получаю этот [email protected] в toaddress или reply_toaddress или cc и т. Д. Ниже мой образец вывода для сообщения

$header = imap_headerinfo($mbox, $msgno); 


stdClass Object 
(
    [date] => Tue, 10 Sep 2013 13:37:49 +0530 
    [Date] => Tue, 10 Sep 2013 13:37:49 +0530 
    [subject] => reply all test 
    [Subject] => reply all test 
    [message_id] => <[email protected]om> 
    [toaddress] => [email protected] 
    [to] => Array 
    (
     [0] => stdClass Object 
      (
       [mailbox] => example 
       [host] => gmail.com 
      ) 

    ) 

    [fromaddress] => Test <[email protected]> 
    [from] => Array 
    (
     [0] => stdClass Object 
      (
       [personal] => Test 
       [mailbox] => test 
       [host] => gmail.com 
      ) 

    ) 

    [reply_toaddress] => Test <[email protected]> 
    [reply_to] => Array 
    (
     [0] => stdClass Object 
      (
       [personal] => Test 
       [mailbox] => test 
       [host] => gmail.com 
      ) 

    ) 

    [senderaddress] => Test <[email protected]> 
    [sender] => Array 
    (
     [0] => stdClass Object 
      (
       [personal] => Test 
       [mailbox] => test 
       [host] => gmail.com 
      ) 

    ) 

    [Recent] => 
    [Unseen] => U 
    [Flagged] => 
    [Answered] => 
    [Deleted] => 
    [Draft] => 
    [Msgno] => 34463 
    [MailDate] => 10-Sep-2013 08:07:00 +0000 
    [Size] => 2609 
    [udate] => 1378800420 
) 

Я хочу, чтобы все адреса получателей, чтобы я мог использовать их в ответ на все.

Я могу четко видеть все адреса (AS Cc) в почтовых клиентах, таких как Outlook, Thunderbird и т. Д., Когда я нажимаю на ответ всем.

ответ

1

Пожалуйста, проверьте эту ссылку: http://www.electrictoolbox.com/php-imap-download-email/

Возможно, в вашем случае, если вы хотите взглянуть на массив «в».

[to] => Array 
     (
      [0] => stdClass Object 
       (
        [mailbox] => john 
        [host] => example.com 
       ) 
      [1] => stdClass Object 
       (
        [mailbox] => mike 
        [host] => example.com 
       ) 
     ) 

Я также прилагаю мой код, который я использовал для подключения к Gmail:

$server = "{imap.gmail.com:993/imap/ssl}INBOX"; 

$mbox = imap_open($server, $user, $pass) or die('Cannot connect: ' . imap_last_error()); 

$count = imap_num_msg($mbox); 

for ($i = 1; $i <= $count; $i++) { 
    $header = imap_headerinfo($mbox, $i); 
    if ($header->subject == "Test 123") { 
     print_r($header); 
    } 
} 

imap_close($mbox); 

Пожалуйста, попробуйте использовать его и попытаться взглянуть на адрес электронной почты вам нужно с полем заголовка. Таким образом, вы уверены, что не ошибетесь с электронным письмом, которое вы отправляете ранее одному из получателей, с более новыми сообщениями. Кроме того, если у вас большой INBOX, эта функция может занять много времени - для поиска электронных писем вы можете использовать функцию imap_search.

+0

Kelu Я использую ту же функцию imap_headerinfo, но вместо того, чтобы получать 2 идентификатора электронной почты, я получаю только 1 в массив. Кстати, вы его протестировали? – Suraj

+0

Я протестировал его прямо сейчас, и это сработало для меня как раз ... Как проверить содержимое массива заголовков? Можете ли вы показать нам содержимое 'print_r ($ header);'? –

+0

Теперь я редактировал свой вопрос с выходом. – Suraj

3

Наконец-то наш ответ так думал о совместном использовании. Хотя imap_headerinfo предоставляет несколько получателей в адресе, как ответил @Kelu, но он указывал только один адрес при использовании с imap_fetch_overview. Я использовал imap_fetch_overview, чтобы получить номер сообщения, а затем imap_headerinfo, чтобы получить всю информацию заголовка этого сообщения. Это давало один адрес получателя.

После поиска много ответ был в php.net сайте только http://www.php.net/manual/en/function.imap-headerinfo.php#98809

Испытано с imap_rfc822_parse_headers и imap_fetchheader и она работает нормально.

+0

Вы можете получить электронную почту 'to' и' cc'? –

 Смежные вопросы

  • Нет связанных вопросов^_^