我在目录中保存了数千封电子邮件。这些电子邮件使用file_get_contents打开。我需要匹配来自这些标头的所有回复:电子邮件。我如何匹配它们?
答案 0 :(得分:1)
从我对类似问题的回答 - 我同意解析电子邮件(我不得不这样做)令人惊讶地痛苦:
某些邮件发送库可以解析原始电子邮件,而not that well documented Zend_Mail应该可以通过将原始电子邮件传递给Zend_Mail_Message对象来实现。 (注意:Reading mailboxes is well documented,从我所看到的,读取原始邮件不是。)
$message = new Zend_Mail_Message(array(), $filename);
$sender = $message->getHeader('Reply-To');
如果你需要的只是发送者,那么一个好的RegEx会更好用,但是,如果你要测试其他标题/操作body / mime部分,那么使用一个库是值得的。
答案 1 :(得分:0)
解析电子邮件将是一种痛苦(我看到人们试图解析电子邮件,并且在某些情况下总是失败,他们没有想到......);我不打算用手解析它们,并且可能重新发明轮子......
我更喜欢的解决方案是使用一些现有的库来解析电子邮件并从中提取数据,例如Zend_Mail
。
如果你真的不能(或者不想)使用任何现有的库,我想一些正则表达式可能会做到这一点......但是不要忘记阅读关于电子邮件的RFC:它会帮助你识别一些你不会想到的案例......
答案 2 :(得分:0)
您无需真正创建复杂的正则表达式来解析电子邮件。使用PHP的字符串方法查找单词“reply-to”的位置,然后获取其后的下一个单词并检查“@”。这些应该是你的电子邮件。发送时,请将有效电子邮件的“检查”留给MTA服务器。