有内容配置时如何提取邮件正文?

Posted

技术标签:

【中文标题】有内容配置时如何提取邮件正文?【英文标题】:How to extract body of the mail, when there is content disposition? 【发布时间】:2013-09-30 13:22:44 【问题描述】:

标题1

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

标题2:

   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)上提取邮件正文?

【问题讨论】:

你能发布一个链接到你正在使用的课程的来源吗? @Cypher 我正在使用这个库函数“code.google.com/p/php-mime-mail-parser” 【参考方案1】:

查看类中的方法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'] : '');
  

【讨论】:

我已经检查过了。代码已经是建议的格式,没有中断..

以上是关于有内容配置时如何提取邮件正文?的主要内容,如果未能解决你的问题,请参考以下文章

当我们使用 phpMailer 发送带有动态内容的邮件时,如何在电子邮件正文中显示多个内联图像

提取邮件内容

Rspec 不显示邮件正文中的内容

MS Access |如何从邮件正文到表格获取内容?

如何使用联系表格 7 在邮件正文中发送 HTML 内容?

网页内容爬取:如何提取正文内容 BEAUTIFULSOUP的输出