用php imap帮我?

时间:2013-01-05 12:15:34

标签: php html encoding imap plaintext

  

可能重复:
  PHP imap problems

我需要能够从php脚本中使用我的邮件(gmail)。但无论我在哪里尝试,电子邮件正文都会出现所有垃圾,其中包含= 3D和随机等号等字符。有时候它会以base64形式出现,或者根本没有。如果没有可用的HTML,我怎样才能收到一封电子邮件并在HTML Purifier clean html中显示或者在pre标签中显示纯文本。?

$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只是空白。

1 个答案:

答案 0 :(得分:1)

带有“像= 3D和随机等号的字符”的消息是引用可打印的编码。您可以使用带有quoted_printable_decode的PHP进行解码。

邮件消息的编码方式有多种,例如quited-printable或base64。发件人决定使用的编码。