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 标签,也许这不是合适的方法,但我使用这个
得到了我想要的结果
我第一次使用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 标签,也许这不是合适的方法,但我使用这个
得到了我想要的结果