PHP IMAP问题(PHP imap problems)

2019-07-17 20:29发布

我需要能够使用我的Gmail从PHP脚本。 但无论我尝试,邮件正文出来都用蹩脚像= 3D人物和随机等号。 有时,它出来作为承滴盘的base64或没有。 我怎样才能获取电子邮件,dispay它HTMLPurifier干净的HTML或纯文本在预先如果没有HTML是可用的。

$overview = imap_fetch_overview($inbox,$email_number,0);

$body_pre = imap_fetchbody($inbox, $email_number, 2.1); 

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

$message = base64_decode($message);

if (empty($message))
 {
  $message = $body_pre;
  $message = preg_replace('@(https?://([-\w\.]+)+(:\d+)?((/[\w/_\.%\-+~]*)?(\?\S+)?)?)@', '<a href="$1">$1</a>',$message);
$message = '<pre>'.htmlentities($message).'</pre>';  

}else{

 $cleanconfig = HTMLPurifier_Config::createDefault();
 $cleanconfig->set('Core.Encoding', 'UTF-8');
 $cleanconfig->set('HTML.Doctype', 'HTML 4.01 Transitional');
 $purifier = new HTMLPurifier($cleanconfig);

  $message = $purifier->purify($message);

 }

这个代码,$消息只自带空白。

Answer 1:

你假设你的邮件总是在2.2的位置? 绝对没有保证......取决于发送什么消息,你打算文本(只有一个机构),HTML /文本(二),在答复附件(三个加)到另一个电子邮件(那么其他的电子邮件将与身体它自己的子机构)。

=3D (引用的可打印)和BASE64数据是因为消息体编码。 看看imap_fetchstructure解释如何许多地方他们都在一个消息(你可以通过它搜索查找文本),并查看->type每个机构的组成部分,以了解它的编码(类型= 4时引用的可打印,类型= 3是BASE64)



文章来源: PHP imap problems