我想显示电子邮件的正文内容。我在php中尝试过IMAP但是有些东西是非常错误的。 IMAP没有收集我的信息正文。它只能在身体中获取签名。所以我正在寻找将电子邮件正文内容读取到网页的替代方法。
这是我的电子邮件的原始文件:
免责声明/版权模糊正被IMAP抓获,但身体中没有任何其他东西被显示出来。有没有其他方法可以从gmail或任何其他可以将内容显示到网页的网站上阅读电子邮件?
我放弃了让IMAP阅读它,因为没有人能够找出问题...我已经花了好几个小时所以我放弃但这里是代码......
<?php
/* connect to gmail */
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'username@gmail.com';
$password = 'password';
/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
/* grab emails */
$emails = imap_search($inbox,'ALL');
/* if emails are returned, cycle through each... */
if($emails) {
/* begin output var */
$output = '';
/* put the newest emails on top */
rsort($emails);
/* for every email... */
foreach($emails as $email_number) {
/* get information specific to this email */
$overview = imap_fetch_overview($inbox, $email_number, 0);
$message = imap_fetchbody($inbox, $email_number, 2);
echo $message;
echo imap_qprint($message);
$message = imap_qprint($message);
echo imap_8bit ($message);
$DateFormatted = str_replace("-0500", "", $overview[0] -> date);
/* output the email header information */
$output .= $overview[0] -> subject ;
$output .= $DateFormatted ;
//$bodyFormatted = preg_replace("/This e-mail(.*)/","",$message);
//$bodyFormatted = preg_replace("/Ce courriel(.*)/","",$bodyFormatted);
/* output the email body */
$output .= $message;
}
echo $output;
}
/* close the connection */
imap_close($inbox);
?>
答案 0 :(得分:3)
除了DmitryK建议的内容外,
添加以下内容使得一切正常,没有随机的“=”符号。 Str_replace用于删除页面上生成的“=”。
$message = imap_fetchbody($inbox, $email_number, "1.1");
$message = str_replace("=", "", $message);
我不知道100%为什么随机生成“=”,但这很可能是由于Exchange Server的一些加密问题,因为我们的服务器大约有10年了。
答案 1 :(得分:2)
您正在处理多部分消息(查看您的pastebin电子邮件示例)。 作为测试尝试使用此行:
$message = imap_fetchbody($inbox, $email_number, "1.1");
纯文本版本低于1.1 HTML版本是1.2 签名位于下一部分 - 它是2.这是您在代码示例中检索的内容。
答案 2 :(得分:0)
您是否可以访问原始电子邮件内容(包含所有标题的内容等)
如果是,请尝试使用plancacke email parser
我以前用过它取得了很好的成功。
$emailParser = new PlancakeEmailParser(...raw email content...);
$emailTo = $emailParser->getTo();
$emailSubject = $emailParser->getSubject();
$emailCc = $emailParser->getCc();
$emailDeliveredToHeader = $emailParser->getHeader('Delivered-To');
$emailBody = $emailParser->getPlainBody();
$emailHtml = $emailParser->getHTMLBody();
答案 3 :(得分:-1)
Gmail有一些不同的IMAP设置,请更密切地遵循原始代码: