我有邮件,我需要通过PHP imap函数获取正文,然后将其存储在数据库中。这些邮件来自响应系统的发送。我使用此代码来获取电子邮件的正文
$bodyText = imap_fetchbody($mbox,$v,1.2);
if(!strlen($bodyText)>0){
$bodyText = imap_fetchbody($mbox,$v,1);
}
这完美无缺,但也包括原始邮件正文,有没有办法只获得回复。
整个电子邮件正文如下所示
**This is a test
--
Kind Regards,
-----Original Message-----
From: -------------
To:--------------------------
Subject: You have received a reply to your enquiry
New System
Date: Tue, 5 Jul 2011 16:24:28 +0200
Good day,
You have received the following reply to an enquiry you made
-------------------------------------------------------------------------------------------------
test3
--------------------------------------------------------------------------------------------------
To reply to this comment please click on the Reply To button and add the message you wish to send.**
有没有办法只使用IMAP功能或其他PHP函数的原始消息来获取消息正文?
答案 0 :(得分:1)
此处有一篇博文:http://www.damnsemicolon.com/php/php-parse-email-body-email-piping解决了这个问题。它使用众所周知的电子邮件客户端回复格式来最好地猜测回复正文。鉴于您无法控制正在使用的电子邮件客户端,这就是您可以获得的最佳效果。
只需注意,链接代码使用from和to name / email来更好地解析电子邮件地址。你可以得到这样的值:
$headerInfo = imap_headerinfo($mbox,$v);
$fromEmail = $headerInfo->from->personal;
$fromName = $headerInfo->from->mailbox . "@" . $headerInfo->from->host;
$toEmail = $headerInfo->to->personal;
$toName = $headerInfo->to->mailbox . "@" . $headerInfo->to->host;
编辑:链接似乎已经死了,这是google缓存:http://webcache.googleusercontent.com/search?q=cache:5MxzHXFU5TkJ:www.damnsemicolon.com/php/php-parse-email-body-email-piping+&cd=1&hl=en&ct=clnk&gl=ca
答案 1 :(得分:0)
你试过吗
substr($wholeMessage, 0, strpos($wholeMessage, 0, "-----Original Message-----"));
这会将消息从开头切换到---- Original Message ---字符串开始的位置。很脏,但可以满足您的需求
编辑:我假设你只有一个哑剧部分..如果你有几个,你可以保存你需要的那些