如何提取邮件正文,有内容配置的时候?
header1
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
x-originating-ip: [x.x.x.x]
Content-Type: application/pkcs7-mime; smime-type=signed-data;
name="smime.p7m"
Content-Disposition: attachment; filename="smime.p7m"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
header2:
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [x.x.x.x]
Content-Type: multipart/alternative;
boundary="_000_A61C9CD725DF1C4FA94C13EC538A38BEEaz18ex3004_"
MIME-Version: 1.0
当我签名发送邮件时,邮件的头部格式为"header1“;当我发送邮件时,没有签名的邮件,邮件头部的格式为”header2“。
我目前正在使用mimemailparser.class.php
文件中的" getMessageBody()" method
来提取邮件正文。
在签名邮件上,我无法检索邮件正文,在使用"getmessagebody()" method
时,它返回空正文,但在未签名邮件上,它可以检索邮件正文。
在检查签名和未签名的邮件头时,存在差异,如何在签名邮件(header1)上提取邮件正文?
发布于 2013-10-01 19:32:41
看看类中的方法getMessageBody()
,代码的以下部分:
foreach($this->parts as $part) {
if ($this->getPartContentType($part) == $mime_types[$type]) {
$headers = $this->getPartHeaders($part);
$body = $this->decode($this->getPartBody($part), array_key_exists('content-transfer-encoding', $headers) ? $headers['content-transfer-encoding'] : '');
break;
}
}
类将MIME消息分成几个部分,可能会出现这样的情况:正文被分成几个部分,但代码只解码第一部分(在您的情况下可能是空的)。尝试像这样修改此代码:
foreach ($this->parts as $part) {
if ($this->getPartContentType($part) == $mime_types[$type]) {
$headers = $this->getPartHeaders($part);
$body .= $this->decode($this->getPartBody($part), array_key_exists('content-transfer-encoding', $headers) ? $headers['content-transfer-encoding'] : '');
}
}
https://stackoverflow.com/questions/18996658
复制相似问题