1

転送された電子メールの電子メール本文(テキストとhtmlの両方)を解析して、電子メールの元の送信者(名前と電子メールの両方)を見つける必要があります。

つまり、ジョンがスティーブに電子メールを送信し、スティーブがマットに転送するとします。したがって、ほとんどのクライアントでは、メッセージは次のようになります。

From: John Smith [mailto:john@example.com]
Sent: 02 March 2012 AM 01:23
To: 'Steve'
Subject: Hello Steve

または

---------- Forwarded message ----------
From: John Smith <ejohn@example.com>
Date: 02 March 2012 AM 01:23
Subject: Hello Steve
To: Steve <steve@example.com>

では、これら2つのケースで、名前と電子メールの値からどのように抽出できますか?「From:...」という行が複数出現する可能性があるため、このテキストの最初の出現のみを抽出する必要があることに注意してください。

4

1 に答える 1

3

正規表現付き

/^From:\s+(.*?)\s*(?:\[mailto:|<)(.*?)(?:[\]>])$/

最初の一致の名前と2番目の一致の電子メールアドレスを取得します


<?php
  $string = "...";
  $pattern = '/^From:\s+(.*?)\s*(?:\[mailto:|<)(.*?)(?:[\]>])$/mi';
  preg_match($pattern, $string, $matches);
  print_r($matches);
?>

時々、名前の連絡先の最初と最後に'もあります。"これを排除するには、次を使用します。

/^From:\s+["']?(.*?)["']?\s*(?:\[mailto:|<)(.*?)(?:[\]>])$/
于 2012-04-20T11:57:18.610 に答える