使用imap_fetchbody时隐秘的邮件正文

时间:2017-05-30 07:57:56

标签: php email

我正在使用以下代码来提取邮件的邮件正文。

$imap = imap_open($mailbox,$user,$password);
$mails = imap_search($imap,'UNSEEN');
foreach($mails as $mail)
{
  $message = trim(utf8_encode(quoted_printable_decode(imap_fetchbody($imap,$mail,"1"))));

  if(strpos($message,"<html") !== false)
  {
    $mail_body = fopen($dir."mail.html","w");
  }
  else
  {
    $mail_body = fopen($dir."mail.txt","w");
  }
}

这工作正常,它适用于我所做的每一项测试。 html-mails,纯文本邮件,如果转发邮件也是如此。

现在从其他来源我收到邮件,其中消息(在使用imap_fetchbody之后)看起来像一些加密的字符串。像这样:

dGVpZW4gaW0gUERGLUZvcm1hdDoNClJla2xhbWF0aW9uc2luZm9ybWF0aW9uOiAyMTMzNjc0MSBS SV8yMTMzNjc0MS5wZGYNCg0KTWl0IGZyZXVuZGxpY2hlbiBHcsO8w59lbg0KSWhyIG5vYmlsaWEg VGVhbQ0KX19fDQoNCm5vYmlsaWEtV2Vya2UgSi4gU3RpY2tsaW5nIEdtYkggJiBDby4gS0cgfCBX YWxkc3RyLiA1My01NyB8IDMzNDE1IFZlcmwNCg0KRGllIEdlc2VsbHNjaGFmdCBpc3QgZWluZSBL

我已经尝试使用imap_fetchbody的其他一些参数,如“1.1”或“1.2”,但是当我这样做时,消息是空的。

你知道为什么会出现这种影响吗?

1 个答案:

答案 0 :(得分:1)

我终于找到了解决方案。原因似乎是转发的邮件,最初是从苹果设备发送的。

现在我使用它来提取消息并且它可以正常工作。

    $structure = imap_fetchstructure($imap, $mail);
    $part = $structure->parts[1];
    $message = imap_fetchbody($imap,$mail,1);
    if(strpos($message,"<html") !== false)
    {
      $message = trim(utf8_encode(quoted_printable_decode($message)));
    }
    else if($part->encoding == 3)
    {
      $message = imap_base64($message);
    }
    else if($part->encoding == 2)
    {
      $message = imap_binary($message);
    }
    else if($part->encoding == 1)
    {
      $message = imap_8bit($message);
    }
    else
    {
      $message = trim(utf8_encode(quoted_printable_decode(imap_qprint($message))));
    }