-1

我需要能够从 php 脚本中使用我的 gmail。但无论我尝试什么,消息正文都带有 =3D 和随机等号等字符。有时它会以 base64 的形式出现,或者什么都没有。如果没有可用的 html,我如何获取电子邮件并在 HTMLPurifier 干净的 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);

 }

这段代码,$message 只是空白。

4

1 回答 1

2

您假设您的邮件消息始终位于位置 2.2?绝对不能保证...取决于您发送的消息计划文本(只有一个正文),html / text(两个),带有附件(三个加号)以回复另一封电子邮件(然后另一封电子邮件将是正文它是自己的子机构)。

(引用的=3D可打印)和 base64 数据是由于消息正文编码。看看imap_fetchstructure哪个解释了消息中有多少部分(您可以搜索它以查找文本),并查看->type每个正文的组件以了解它的编码(type=4 引用可打印,type=3 是 base64 )

于 2013-01-04T14:33:32.990 回答