我正在尝试宣读电子邮件的正文。我已经设置了以下短代码。
<?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);
?>
任何想法缺少什么???
答案 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,以便了解如何使用这些消息吗?