メールの本文をスキャンして、転送されたメールからメール アドレス リストを探したい。
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: 行が個別の一致です。よろしくお願いします。