2014-02-18 4 views
0

У меня проблема с разбором сообщения электронной почты с PHP IMAP. Проблема в том, что я подписал сообщение с подписью pkcs # 7. Почта содержит текст и 2 вложения, первый из которых - smime.p7s, а второй - message.htm, который является html вложением. Я хотел бы проанализировать.PHP IMAP Получить подписанное приложение

Если честно, я не знаю, как я могу получить доступ к содержимому этого файла.

$hostname = '{host}INBOX'; 
    $username = 'name'; 
    $password = 'pass'; 
    /* try to connect */ 
    $inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error()); 
    /* grab emails */ 
    $emails = imap_search($inbox,'UNSEEN'); 
    $msg = Array(); 
    if($emails) { 
     /* begin output var */ 
     $output = ''; 

     /* put the newest emails on top */ 
     rsort($emails); 
     /* for every email... */ 
     foreach($emails as $email_number) { 
      $overview = imap_fetch_overview($inbox,$email_number,0); 
      $message = imap_fetchbody($inbox,$email_number,2); 
      $structure = imap_fetchstructure ($inbox,$email_number,FT_UID); 
      echo "<pre>"; 
      var_dump($structure); 
      echo "</pre>"; 
      break; 
     } 
    } 

я получаю полную структуру, и я могу найти там часть:

 object(stdClass)#16 (14) { 
      ["type"]=> 
      int(0) 
      ["encoding"]=> 
      int(4) 
      ["ifsubtype"]=> 
      int(1) 
      ["subtype"]=> 
      string(4) "HTML" 
      ["ifdescription"]=> 
      int(0) 
      ["ifid"]=> 
      int(0) 
      ["lines"]=> 
      int(123) 
      ["bytes"]=> 
      int(4473) 
      ["ifdisposition"]=> 
      int(1) 
      ["disposition"]=> 
      string(10) "attachment" 
      ["ifdparameters"]=> 
      int(1) 
      ["dparameters"]=> 
      array(1) { 
      [0]=> 
      object(stdClass)#17 (2) { 
       ["attribute"]=> 
       string(8) "filename" 
       ["value"]=> 
       string(37) "message.htm" 
      } 
      } 
      ["ifparameters"]=> 
      int(1) 
      ["parameters"]=> 
      array(2) { 
      [0]=> 
      object(stdClass)#18 (2) { 
       ["attribute"]=> 
       string(4) "name" 
       ["value"]=> 
       string(37) "message.htm" 
      } 
      [1]=> 
      object(stdClass)#19 (2) { 
       ["attribute"]=> 
       string(7) "charset" 
       ["value"]=> 
       string(8) "us-ascii" 
      } 
      } 
     } 

Может кто-нибудь дать мне подсказку, как я могу получить доступ к содержанию message.htm?

+0

Вы пробовали 'var_dump ($ сообщение)' 'после var_dump ($ структуры)'? – willoller

+0

Да, я сделал, я получил некоторую строку с кодировкой base64 после декодирования. Я получаю некоторые случайные знаки, закодированные с помощью сертификата VeriSign. Я думаю, – Mithrand1r

+0

Попробуйте заменить 'imap_fetchbody (...)' на 'imap_body (...)' – willoller

ответ

1

Поскольку у структуры нет parts, сообщение является «простым».

Попробуйте использовать:

$message = imap_fetchbody($inbox,$email_number,0); 

Это будет получать «0-й» части сообщения, которое должно быть тело.

Заканчивать Документы здесь: http://www.php.net/manual/en/function.imap-fetchstructure.php

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