imap_fetchbody 不支持

imap_fetchbody not supported

我第一次使用imap。 . 所以我尝试使用 imap 从 gmail 中以纯文本形式检索电子邮件,一切正常,但是当我尝试检索直接电子邮件时遇到问题,

假设我有 first@gmail.com 和 second@gmail.com 并且都收到来自 noreply@site.com

的相同电子邮件

如果我使用 imap 直接从 first@gmail.com 检索,imap_fetchbody return "Your email client is not supported=" 在我的母语中 但如果我将同一封电子邮件从 second@gmail.com 转发到 first@gmail.com 然后在第一封电子邮件中检索它,它会起作用

这是我的简化代码

$imapPath = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX';

$username = 'first@gmail.com';

$password = 'mypassword';

$inbox = imap_open($imapPath,$username,$password) or die('Cannot connect : ' . imap_last_error());

$emails = imap_search($inbox,'UNSEEN');

if($emails) 
{

   $output = '';

   rsort($emails);

   foreach($emails as $email_number) 
   {
      $message = imap_fetchbody($inbox,$email_number,1);

      echo $message."<br><hr>";
   }

}

else

{

echo "No unseen mail";

}

imap_close($inbox);

?>

我试过将 imap_fetchbody 从 1 更改为 0,它起作用了,但不是我需要的结果。 . 1.1 和 1.2 return 空内容 那么有没有办法让我可以直接检索它? 提前致谢,对不起,如果我没有描述它 clearly/poor 英语哈哈

好的,所以 "less secure apps" 是允许的 https://support.google.com/accounts/answer/6010255?hl=en

您是否尝试评估 body 结构 http://php.net/manual/de/function.imap-fetchstructure.php ...我会在那里寻找第二个答案

我通过改变解决了它

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

$message = strip_tags(quoted_printable_decode(imap_fetchbody($inbox,$email_number,2)));

有点脏哈哈。 . 不确定为什么某些电子邮件不支持以明文形式获取,但如果转发电子邮件则可以。 .当我试图回显 imap_fetchbody 明文结果

时,我注意到 "Your email client not supported=" 出现了

解决方法是将其作为 html 获取,然后去除 html 标签,也许这不是合适的方法,但我使用这个

得到了我想要的结果