使用$cat -A xx.eml文件,发现foxmail的eml文件文件结尾和空行使用的\r\r\n,

如:

Received: from WDGTO0MYSBX754J (unknown [106.39.222.102])^M^M$
^Iby smtp10 (Coremail) with SMTP id DsCowABnE2wPf8pW4XqYBw--.24431S2;^M^M$
^IMon, 22 Feb 2016 11:22:56 +0800 (CST)^M^M$
Date: Mon, 22 Feb 2016 11:23:17 +0800^M^M$
From: "postmaster@test.com" <postmaster@test.com>^M^M$
To: postmaster <postmaster@test.com>^M^M$
Subject: ccc^M^M$
X-Priority: 3^M^M$
X-GUID: BF101B77-22A1-4EFA-9ECE-DE1849536DD4^M^M$
X-Has-Attach: no^M^M$
X-Mailer: Foxmail 7, 2, 7, 26[cn]^M^M$
Mime-Version: 1.0^M^M$
Message-ID: <postmaster@test.com>^M^M$
Content-Type: multipart/alternative;^M^M$
^Iboundary="----=_001_NextPart126808224252_=----"^M^M$
X-CM-TRANSID:DsCowABnE2wPf8pW4XqYBw--.24431S2^M^M$
X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73^M^M$
^IVFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRVpBfUUUUU^M^M$
X-Originating-IP: [106.39.222.102]^M^M$
X-CM-SenderInfo: 5fqox3ltk6il2tof0z/xtbBDhIXjFQG4BtVJQAAse^M^M$
^M^M$
This is a multi-part message in MIME format.^M^M$
^M^M$
------=_001_NextPart126808224252_=----^M^M$
Content-Type: text/plain;^M^M$
^Icharset="us-ascii"^M^M$
Content-Transfer-Encoding: base64^M^M$
^M^M$
Y2NjDQoNCg==^M^M$
^M^M$
------=_001_NextPart126808224252_=----^M^M$
Content-Type: text/html;^M^M$
^Icharset="us-ascii"^M^M$
Content-Transfer-Encoding: quoted-printable^M^M$
^M^M$
cccc^M^M$
------=_001_NextPart126808224252_=------^M^M$

但是Mail_mimeDecode中用来分段header和body的函数中是

function _splitBodyHeader($input)
{
if (preg_match("/^(.*?)\r?\n\r?\n(.*)/s", $input, $match)) {
return array($match[1], $match[2]);
}
// bug #17325 - empty bodies are allowed. - we just check that at least one line
// of headers exist..
if (count(explode("\n",$input))) {
return array($input, '');
}
$this->_error = 'Could not split header and body';
return false;
}

可以发现其中的正则表达式"/^(.*?)\r?\n\r?\n(.*)/s"中的\r?无法匹配成功eml文件的空行,它只能匹配0个或1个\r,所以将preg_match中的正则表达式换成

preg_match("/^(.*?)\r*\n\r*\n(.*)/s

用来匹配0个或多个\r即可。

最新文章

  1. 学点HTTP知识
  2. MySQL 5.7版本sql_mode=only_full_group_by问题
  3. MVC系列1-MVC基础
  4. 文件服务器迁移—FSMT
  5. nodejs笔记四--创建一个最简单的 express 应用
  6. java中instanceof和getClass()的作用
  7. 用Octopress在Github pages上写博客
  8. 招一位安防软件project师,嵌入式开发project师
  9. Myeclipse+Tomcat安装与配置
  10. 转: 用css把图片转为灰色图
  11. Presto集群部署
  12. FFPLAY的原理(五)
  13. windows 安装docker报错:Error checking TLS connection: ssh command error: command : ip addr show
  14. [转]Gitlab-CI持续集成之Runner配置和CI脚本
  15. UVA10410-Tree Reconstruction(BFS序和DFS序的性质)
  16. Service Mesh
  17. FlexRay笔记
  18. tomcat配置文件context.xml和server.xml分析
  19. C#中控件Control的Paint事件和OnPaint虚函数的区别
  20. maven中跳过单元测试(转)

热门文章

  1. 【css】cursor鼠标指针光标样式知识整理
  2. kafka及扩展的安装笔记
  3. haystack(django的全文检索模块)
  4. Java面向对象---抽象类与接口
  5. flask url_for()和redirect的区别
  6. 查看sqlserver表空间
  7. [oldboy-django][4python面试]有关csrf跨站伪造请求攻击
  8. PHP简单登录退出代码
  9. springboot添加事务
  10. log4j配置信息