Top / Java / JavaMail / 受信メールの解析に使う

JavaMail?をメールの解析に使う、って?

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

サンプル

サンプルとして以下のようなメールを扱ってみたいと思います。

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?で内容を解析してみたいと思います。だいたいの内容は以下の通りですね。

ちなみに

Subject: =?ISO-2022-JP?B?GyRCJUYlOSVIJWEhPCVrISobKEI=?=

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

MIMEでエンコードされたMailのSubjectのデコード、エンコード - 教えて!goo

まずはテキストファイルからメールを読み取る

まずは標準入力からでなく、ファイルからストリームを作成して、メールを解析してみます。

パイプされた標準入力からメールを読み取る

次に実際に標準入力からやってみます。

他の情報も取得してみる。

関連リンク

メーリングリストの構築と運用(前編)(4/4)


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Java / JavaMail / 受信メールの解析に使う

現在のアクセス:65471


*1 SMTPをコマンドラインでたたくときの、mail from: xxx のこと。Envelope Fromってやつ

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