1

我正在研究记录发送到某个地址的电子邮件消息。我有一个将信息放入 MySql 的 PHP 脚本,它运行良好。

我需要能够根据类似于 Gmail 的“对话”对邮件进行分组,并且已经对此进行了一些阅读。这不需要完美,因为消息将在网站上显示之前经过手动批准,然后可以更正任何错误。我只是想尽可能减少工作量,以便将新电子邮件链接到原始电子邮件应该自动完成。

我的理解是In-Reply-Toheader可以识别原始消息,但是它的使用不规范。

我在另一个页面上找到了这个:

The most common forms of In-Reply-To seemed to be:

31%     NAME's message of TIME <ID@HOST>
22%     <ID@HOST>
9%      <ID@HOST> from NAME at "TIME"
8%      USER's message of TIME <ID@HOST>
7%      USER's message of TIME
6%      Your message of "TIME"
17%     hundreds of other variants (average 0.4% each?)

但是,这似乎表明假设如果存在 In-Reply-To 字段,那么在<>其中找到的第一个括号内的文本是父消息的 Message-ID 并不是不合理的。

那么,获得该值的最简单方法是什么?是否有一个正则表达式可以让我抓住里面的任何东西<>如果是可用的?(根据我发现的帖子,这应该是 a<和中的第一个值>吗?)

感谢您的任何帮助,您可以提供。

4

1 回答 1

2

您应该能够在反向引用中获取第一场比赛:

<(.+)>

解释:

//    Match the character “&lt;” literally «<»
//    Match the regular expression below and capture its match into backreference number 1 «(.+)»
//       Match any single character that is not a line break character «.+»
//          Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
//    Match the character “&gt;” literally «>»

根据此文档,您可以编写如下内容来完成您想做的事情(如果这不是有效的 php,请原谅我):

$string ='blah blah blah <ID@HOST>';
preg_match('/<(.+)>/', $string, $match);
print_r($match);
于 2011-11-08T20:48:20.427 回答