// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents

**JavaMailをメールの解析に使う、って? [#ra5e3f16]
JavaMailは通常メールを送信したりメールを受信するためのAPI群ですが、メールデータをストリームから受け取って解析する、などの用途にも利用することができます。たとえば受信したメールデータの宛先アドレスを抜き出すとか、本文の中身をサニタイズするとか、そんな場合ですね。ストリームから受け取れるってことは標準入力からのデータも解析できるわけで、たとえば、.forwardでメールをプログラムに転送してそこでなんか処理するときなど、標準入力よりプログラムにメールデータが渡されることになりますが、そこでJavaMailのAPIを利用することができます。



**サンプル [#l8ed694f]
サンプルとして以下のようなメールを扱ってみたいと思います。
 From fromaddress@hogehoge.com  Sun May 18 01:13:17 2008
 Return-Path: <fromaddress@hogehoge.com>
 X-Original-To: toaddress@hogehoge.jp
 Delivered-To: toaddress@hogehoge.jp
 Received: from fuga.so-net.ne.jp (fuga.so-net.ne.jp [202.238.82.9])
 	by mail.hogehoge.jp (Postfix) with ESMTP id A75B1408BE
 	for <toaddress@hogehoge.jp>; Sun, 18 May 2008 01:13:12 +0900 (JST)
 Received: from [127.0.0.1] 
 	by fuga.so-net.ne.jp  with ESMTP id m4HGD9n9027300;
 	Sun, 18 May 2008 01:13:09 +0900 (JST)
 Date: Sun, 18 May 2008 01:13:10 +0900
 From: Hogehoge Com <fromaddress@hogehoge.com>
 To: toaddress@hogehoge.jp
 Subject: =?ISO-2022-JP?B?GyRCJUYlOSVIJWEhPCVrISobKEI=?=
 Message-Id: <20080518011206.8EB1.fromaddress@hogehoge.com>
 MIME-Version: 1.0
 Content-Type: text/plain; charset="ISO-2022-JP"
 Content-Transfer-Encoding: 7bit
 X-Mailer: Becky! ver. 2.31 [ja]
 
 メールのテストです。
 end。
 
このメールをストリームから受信して、JavaMailで内容を解析してみたいと思います。だいたいの内容は以下の通りですね。

-差出人: Hogehoge Com <fromaddress@hogehoge.com>
-送信先: toaddress@hogehoge.jp
-(厳密な)送信元: fromaddress@hogehoge.com ((SMTPをコマンドラインでたたくときの、mail from: xxx のこと。Envelope Fromってやつ))
-127.0.0.1 -> fuga.so-net.ne.jp -> mail.hogehoge.jp と配送された
-Return-Path はfromaddress@hogehoge.com (って最後に受信したサーバ mail.hogehoge.jp がつけた)

ちなみに
 Subject: =?ISO-2022-JP?B?GyRCJUYlOSVIJWEhPCVrISobKEI=?=
ですが "GyRCJUYlOSVIJWEhPCVrISobKEI=" をBase64でデコードしてそのバイナリを上記 ISO-2022-JP でデコードすると「テストメール!」となります。

[[MIMEでエンコードされたMailのSubjectのデコード、エンコード - 教えて!goo>http://oshiete1.goo.ne.jp/qa519669.html]]



***まずはテキストファイルからメールを読み取る [#xe822e41]
まずは標準入力からでなく、ファイルからストリームを作成して、メールを解析してみます。


***パイプされた標準入力からメールを読み取る [#fd81b0d5]
次に実際に標準入力からやってみます。




**他の情報も取得してみる。 [#fe5fa788]



**関連リンク [#w3fb37e8]
[[メーリングリストの構築と運用(前編)(4/4)>http://www.atmarkit.co.jp/flinux/rensai/qmail04/qmail04d.html]]


----
この記事は
#vote(おもしろかった,そうでもない)

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS