我希望可以搜索邮件正文中转发邮件包含的邮件地址列表,例如:
From: John Smith <john@example.com>
To: Jane Smith <jane@example.com>, Mary Smith
<mary@example.com>
Cc: Ed Smith <ed@example.com>
Subject: this is a test
我将使用
Mail_RFC822::parseAddressList()
来完全解析每个列表(其中有很多细节需要正确处理,因此我不应该试图重新设计它),但我确实想要取出要交给此函数的行。 我有一个简单的正则表达式,只查找带有电子邮件地址的行,这在大多数情况下都有效。但是,在实际应用中,有时会出现像上面的示例那样的电子邮件,其中名称和地址被拆分到不同的行上。 如果我逐行执行,上面的To:行的前半部分将根本无法在parseAddressList()中解析,因为没有地址的名称是无效的;而底部一半将被解析,但将缺少名称,因为它在前一行上。
因此,我需要一个可以同时查看多行的正则表达式,这使事情变得比我的专业知识更加复杂。一个足够的解决方案将继续将行分组在一起,只要它继续发现基本的电子邮件模式(
[\w\.\+\-]+@[\w\.\-]+\.[\w\.\-]+
...不需要完美),但没有单词冒号组合在行首(^\S*:
)以便像上面的示例中的Cc:行是一个单独的匹配。 预先感谢您的帮助。