php imap阅读机构

时间:2014-06-10 05:29:13

标签: php imap

我正在尝试宣读电子邮件的正文。我已经设置了以下短代码。

<?php
$imap = imap_open('{xxx.com/notls}', "xxx@xxx.com", "xxx")
or die("Can't connect: " . imap_last_error());
if( $imap ) { 
 $num = imap_num_msg($imap ); 
 if( $num >0 ) 
 { 
 echo nl2br(imap_qprint(imap_body($imap , $num)));
 } 
} 
imap_close($imap);
?>

这样可以正常工作,但也会输出一堆不必要的数据。

我只需要身体并尝试以下代码,但这不起作用。

<?php
$imap = imap_open('{xxx.com/notls}', "xxx@xxx.com", "xxx")
or die("Can't connect: " . imap_last_error());
if( $imap ) { 
 $num = imap_num_msg($imap ); 
 if( $num >0 ) 
 { 
 $message = quoted_printable_decode(imap_fetchbody($imap ,$num, 1.2));
 echo $message;     
 } 
} 
imap_close($imap);
?>

任何想法缺少什么???

3 个答案:

答案 0 :(得分:0)

问题在于imap_fetchbody($ imap,$ num,1.2)行。 该数字必须设置为1.1或1,它的工作正常。

1 - MULTIPART / ALTERNATIVE 1.1 - 文本/平原 1.2 - TEXT / HTML

答案 1 :(得分:0)

甚至更好地占1和1.2

$bodyText = quoted_printable_decode(imap_fetchbody($imap ,$num, 1.2));
if(!strlen($bodyText)>0)
  {
  $bodyText = quoted_printable_decode(imap_fetchbody($imap ,$num, 1));
  }
  echo nl2br($bodyText); 
} 

答案 2 :(得分:0)

您的代码未能:

  • 处理BODYSTRUCTURE,以便它知道电子邮件的哪些部分很有趣。它将无法显示完全有效的电子邮件。
  • 检测实际使用的Content-Transfer-Encoding,而改为硬编码quoted-printable。它会在某些完全有效的电子邮件上显示完全垃圾。

我建议您仔细阅读RFC 2047,以便了解如何使用这些消息吗?