2013-01-12 11 views
7

私が理解するところでは、Regexは特定のドキュメント内の電子メールをスキャンするときに使用するのに最適なものではありません。これに代わる方法があるのだろうか?または私が気づいていないベストプラクティスの方法?Ruby - テキストまたはHTMLからの電子メールの解析

+0

文書内の電子メールはどのように見えますか? –

+0

なぜ正規表現を使用しないのですか?人々は非常に長い時間電子メールを定義する正規表現に対して文字列をテストしています。 –

+0

「電子メール」が意味するものを定義します。 To:/ From:/ Subject:ヘッダーを含む電子メールメッセージ?メールアドレス?それが何であれ、あなたの質問を更新し、より説明的にしてください。また、抽出する対象のデータを含め、スキャンするテキストの例を表示します。 –

答えて

15

構文解析ジョブでは、ライブラリを信頼することをお勧めします。あなたは電子メールを解析するための一つのRubyライブラリはMailある

など、ライブラリは常に異なるケースを考慮して、正規表現よりも詳細に問題を扱っていますが、正しいです:

メールは、インターネットでメールを扱うように設計されたRubyのライブラリ 世代、の構文解析と簡単なrubesqueの方法で送信します。

[...]メールはあなたが何をしているか知っている 場合、あなたはあなたのすべての最後のビットをいじることができ、本当にあなたが解析している電子メールメッセージを開きます システム指向の非常に単純なオブジェクトを使用して設計されています に直接メールを送信してください。ここで

電子メールの内容にアクセスする方法の例です:

mail = Mail.read('/path/to/message.eml') 

mail.envelope.from #=> '[email protected]' 
mail.from.addresses #=> ['[email protected]', '[email protected]'] 
mail.sender.address #=> '[email protected]' 
mail.to    #=> '[email protected]' 
mail.cc    #=> '[email protected]' 
mail.subject   #=> "This is the subject" 
mail.date.to_s  #=> '21 Nov 1997 09:55:06 -0600' 
mail.message_id  #=> '<[email protected]>' 
mail.body.decoded #=> 'This is the body of the email... 

また、マルチパートメールを解析するだけでなく、テストや添付ファイルを抽出することができます。

+0

私はこの種の例をどこにでも見てきましたが、 '@my_subject_variable = mail.envelope.from'のようなものではありません。それは単なるコピー&ペーストの仕事ですか、誰も同じ例を使用する理由はありますか? –

+1

@HerbMeehanこの例は、リポジトリのREADMEファイルから取得したものです。確かに、あなたが提案した方法でそれを使うことができます。 –

関連する問題