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只是因为这个好工具的限制