Eメールを自動処理する必要に せまられました。どうやらEメール処理用のライブラリが すでに つくられているようです。さっそくCPANからEmail::MIMEモジュールをダウンロード。愛用のStrawberry Perlにはcpanコマンドも付属しているので、コマンド ラインからコマンド cpan Email:MIME を実行するだけで、ダウンロードからインストールまで全部自動で やってくれます。簡単!
変数 $mail にメール全体が はいっているとして、メールの主要なフィールドと本文を抽出するには、
これだけ。なんの確認も せずに$parts[ 0] をよみだしていますが、multipartメッセージで ない ばあいは これでOK。multipartメッセージで あっても、最初のパートにメッセージ本文が はいっていれば これでOK (たいていのメーラーでは そうなると おもいます)。ズボラなコードですが、今回の処理では これで十分。厳密に処理するなら、ヘッダContent-TypeやContent-Dispositionを確認すべきです。
※ この記事の本文からは漢字の訓を排除しています。
変数 $mail にメール全体が はいっているとして、メールの主要なフィールドと本文を抽出するには、
use Email::MIME; use Encode; ... $parsed = Email::MIME->new( $mail); $from = $parsed->header( 'From' ); $to = $parsed->header( 'To' ); $cc = $parsed->header( 'Cc' ); $bcc = $parsed->header( 'Bcc' ); $date = $parsed->header( 'Date' ); $subj = $parsed->header( 'Subject' ); $part0 = $parts[ 0]; $charset = $part0->{'ct'}->{'attributes'}->{'charset'}; $body = $part0->body; $body = decode( $charset, $body);
これだけ。なんの確認も せずに$parts[ 0] をよみだしていますが、multipartメッセージで ない ばあいは これでOK。multipartメッセージで あっても、最初のパートにメッセージ本文が はいっていれば これでOK (たいていのメーラーでは そうなると おもいます)。ズボラなコードですが、今回の処理では これで十分。厳密に処理するなら、ヘッダContent-TypeやContent-Dispositionを確認すべきです。
※ この記事の本文からは漢字の訓を排除しています。