Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 电子邮件标题中的额外换行符_Regex_Email_Email Client_Email Headers - Fatal编程技术网

Regex 电子邮件标题中的额外换行符

Regex 电子邮件标题中的额外换行符,regex,email,email-client,email-headers,Regex,Email,Email Client,Email Headers,我有一个webmail系统,一段时间以来,我注意到来自一些服务器的电子邮件在标题中有一个额外的换行符 首先是来自Google的偶尔Dmarc报告。大约一周一次。 然后是来自Bluebottle的其他自动电子邮件。 其他偶尔的邮件来自不同的发件人 来自Google和Bluebottle的那一行中的额外行始终位于同一位置。 其余的都不是。这就是问题所在。 我可以运行一个很好的regex来修复那些在同一个地方出现的问题,但对于其他问题,我不想诱惑信心,造成更多的伤害而不是好处 我已经注意到主要的供应商

我有一个
webmail
系统,一段时间以来,我注意到来自一些服务器的电子邮件在标题中有一个额外的换行符

首先是来自
Google
的偶尔
Dmarc
报告。大约一周一次。 然后是来自
Bluebottle
的其他自动电子邮件。 其他偶尔的邮件来自不同的发件人

来自
Google
Bluebottle
的那一行中的额外行始终位于同一位置。 其余的都不是。这就是问题所在。 我可以运行一个很好的
regex
来修复那些在同一个地方出现的问题,但对于其他问题,我不想诱惑信心,造成更多的伤害而不是好处

我已经注意到主要的供应商通常不会为此烦恼,但我想麻烦一下

我已经构建了这个
regex
(\r[a-z-]*:.*)+(\r\r)+([a-z-]*:.*)+
到目前为止,它似乎有效,但我有点担心它可能会给我带来问题


由于不推荐使用如此广泛的正则表达式,如果有人遇到这个问题,我想听听他们的意见

经过一个月的测试

到目前为止,这似乎工作得很好,没有任何问题

$data = preg_replace("/(\r\n)([a-z-]*)(:)(.*)(\r\n)(\r\n)([a-z-]*):(.*)(\r\n)/i", "$1$2$3$4$6$7$8$9", $data);

你的担心是正确的。你为什么要麻烦?这个额外的回车会引起问题吗?您是如何使用或打算使用这个正则表达式的?在使用这个正则表达式之前,如果有更好的解决方案,我希望得到一些反馈。此问题导致我的自动跳出、取消订阅和Dmarc处理器出现问题,因为中断出现在自动电子邮件中,而不是普通电子邮件中。rfc 822说,每行后面应该有一个CRLF,消息正文前面应该有一个CRLF,因此如果您找到2个CRLF,其余的应该是正文,如果它的标题在那里,发送软件不遵循rfc 822,在您的regexp中,您只有CR(\r)而没有LF(\n),如果这样做有效,您的\n都到哪里去了?啊,对不起,我使用\r只是因为这个好工具的限制