从退回的电子邮件中提取最终收件人

时间:2014-06-24 18:30:44

标签: php regex

这是我的字符串:

--A683C6405E1.1403410842/server.abc.com
Content-Description: Delivery report
Content-Type: message/delivery-status

Reporting-MTA: dns; server.abc.com
X-Postfix-Queue-ID: A683C6405E1
X-Postfix-Sender: rfc822; bouncer@abc.com
Arrival-Date: Tue, 13 Jun 2012 00:03:28 -0400 (EDT)

Final-Recipient: rfc822; getthis@gmail.com
Action: failed
Status: 4.4.1


--A683C6405E1.1403410842/server.abc.com
Content-Description: Undelivered Message
Content-Type: message/rfc822
Content-Transfer-Encoding: 8bit

Return-Path: 
Received: by server.abc.com (Postfix, from userid 517)
    id A683C6405E1; Tue, 17 Jun 2014 00:03:28 -0400 (EDT)

我需要从此字符串中提取Final-Recipient。输出应为getthis@gmail.com

1 个答案:

答案 0 :(得分:0)

Final-Recipient:\s*RFC822;\s*([\w_.+-]+@[\w-]+\.[\w-.]+)Final-Recipient:\s*RFC822;\s*(.*)

第一个也有邮件地址结构验证器,第二个捕获任何东西到行尾。我不知道Final-Recipient中应该有哪种邮件地址 - 如果只有合适的邮件地址都可以。但如果还有破损的邮件地址(例如abc @ abc或*?= {gmail.com),第二个正则表达式就是那个。


不过,不要忘记将regex设置为不敏感(PHP:"/Final-Recipient:\s+?RFC822;\s+?(.*)/i")。我想RFC可能是大写或小写。