Java/JavaMail/受信メールの解析に使う
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**JavaMailをメールの解析に使う、って? [#ra5e3f16]
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...
by mail.hogehoge.jp (Postfix) with ESMTP id A75B1408BE
for <toaddress@hogehoge.jp>; Sun, 18 May 2008 01:13:12 ...
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をコマン...
-127.0.0.1 -> fuga.so-net.ne.jp -> mail.hogehoge.jp と配...
-Return-Path はfromaddress@hogehoge.com (って最後に受信し...
ちなみに
Subject: =?ISO-2022-JP?B?GyRCJUYlOSVIJWEhPCVrISobKEI=?=
ですが "GyRCJUYlOSVIJWEhPCVrISobKEI=" をBase64でデコード...
[[MIMEでエンコードされたMailのSubjectのデコード、エンコー...
***まずはテキストファイルからメールを読み取る [#xe822e41]
まずは標準入力からでなくファイルからストリームを作成して...
サンプルは以下の通り。
public class FileMain {
public static void main(String[] args) throws IOExcept...
try {
InputStream in = new FileInputStream(new File("mai...
Session session = Session.getDefaultInstance(
new java.util.Properties(), null);
MimeMessage message = new MimeMessage(session, in);
print(message);
} catch (MessagingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
private static void print(MimeMessage message) throws ...
IOException {
System.out.println("---- 全ヘッダをリストします ----...
Enumeration<Header> allHeaders = message.getAllHeade...
while (allHeaders.hasMoreElements()) {
Header header = allHeaders.nextElement();
System.out
.println(header.getName() + " : " + header.get...
}
System.out.println("---- 全ヘッダ 以上 ----");
System.out.println("---- ヘッダ名指定で取ってみる(Re...
String[] headers = message.getHeader("Received");
for (String header : headers) {
System.out.println(header);
}
System.out.println("---- ヘッダ名指定で取ってみる(Re...
headers = message.getHeader("Return-Path");
for (String header : headers) {
System.out.println(header);
}
System.out.println("---- ヘッダ名指定で取ってみる(Su...
headers = message.getHeader("Subject");
for (String header : headers) {
System.out.println(header);
}
System.out.println("デコード↑してくれない");
System.out.println("---- 専用のメソッドで取ってみる(...
System.out.println(message.getSubject());
System.out.println("デコード↑してくれた");
System.out.println("---- 専用のメソッドで取ってみる(...
Address[] allRecipients = message.getAllRecipients();
for (Address address : allRecipients) {
System.out.println(address);
}
System.out.println("---- メール本体の取得 ----");
System.out.println(message.getContent());
System.out.println("--------");
}
}
結果は以下の通りです
---- 全ヘッダをリストします ----
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 [20...
by mail.hogehoge.jp (Postfix) with ESMTP id A75B1408BE
for <toaddress@hogehoge.jp>; Sun, 18 May 2008 01:13:12 ...
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.c...
MIME-Version : 1.0
Content-Type : text/plain; charset="ISO-2022-JP"
Content-Transfer-Encoding : 7bit
X-Mailer : Becky! ver. 2.31 [ja]
---- 全ヘッダ 以上 ----
---- ヘッダ名指定で取ってみる(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 ...
from [127.0.0.1]
by fuga.so-net.ne.jp with ESMTP id m4HGD9n9027300;
Sun, 18 May 2008 01:13:09 +0900 (JST)
---- ヘッダ名指定で取ってみる(Return-Path) ----
<fromaddress@hogehoge.com>
---- ヘッダ名指定で取ってみる(Subject) ----
=?ISO-2022-JP?B?GyRCJUYlOSVIJWEhPCVrISobKEI=?=
デコード↑してくれない
---- 専用のメソッドで取ってみる(Subject) ----
テストメール!
デコード↑してくれた
---- 専用のメソッドで取ってみる(To) ----
toaddress@hogehoge.jp
---- メール本体の取得 ----
メールのテストです。
end。
--------
<>とかの微妙な装飾まで細かな解析はしてくれないみたいで...
***パイプされた標準入力からメールを読み取る [#fd81b0d5]
次に実際に標準入力からやってみます。
public static void main(String[] args) {
try {
InputStream in = System.in;
Session session = Session.getDefaultInstance(
new java.util.Properties(), null);
MimeMessage message = new MimeMessage(session, in);
print(message);
} catch (MessagingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
ストリームとして標準入力を渡しています。では実際にUnix上...
[hoge@www Test]$ export CLASSPATH=lib/mail.jar:lib/sampl...
[hoge@www Test]$ cat mail.dummy.txt | java nu.mine.kino....
書きませんが先と同じ結果が得られました。
ちなみにパイプしない場合は入力待ちになります。色々入力後C...
**関連リンク [#w3fb37e8]
[[メーリングリストの構築と運用(前編)(4/4)>http://www....
----
この記事は
#vote(おもしろかった[53],そうでもない[16])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**JavaMailをメールの解析に使う、って? [#ra5e3f16]
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...
by mail.hogehoge.jp (Postfix) with ESMTP id A75B1408BE
for <toaddress@hogehoge.jp>; Sun, 18 May 2008 01:13:12 ...
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をコマン...
-127.0.0.1 -> fuga.so-net.ne.jp -> mail.hogehoge.jp と配...
-Return-Path はfromaddress@hogehoge.com (って最後に受信し...
ちなみに
Subject: =?ISO-2022-JP?B?GyRCJUYlOSVIJWEhPCVrISobKEI=?=
ですが "GyRCJUYlOSVIJWEhPCVrISobKEI=" をBase64でデコード...
[[MIMEでエンコードされたMailのSubjectのデコード、エンコー...
***まずはテキストファイルからメールを読み取る [#xe822e41]
まずは標準入力からでなくファイルからストリームを作成して...
サンプルは以下の通り。
public class FileMain {
public static void main(String[] args) throws IOExcept...
try {
InputStream in = new FileInputStream(new File("mai...
Session session = Session.getDefaultInstance(
new java.util.Properties(), null);
MimeMessage message = new MimeMessage(session, in);
print(message);
} catch (MessagingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
private static void print(MimeMessage message) throws ...
IOException {
System.out.println("---- 全ヘッダをリストします ----...
Enumeration<Header> allHeaders = message.getAllHeade...
while (allHeaders.hasMoreElements()) {
Header header = allHeaders.nextElement();
System.out
.println(header.getName() + " : " + header.get...
}
System.out.println("---- 全ヘッダ 以上 ----");
System.out.println("---- ヘッダ名指定で取ってみる(Re...
String[] headers = message.getHeader("Received");
for (String header : headers) {
System.out.println(header);
}
System.out.println("---- ヘッダ名指定で取ってみる(Re...
headers = message.getHeader("Return-Path");
for (String header : headers) {
System.out.println(header);
}
System.out.println("---- ヘッダ名指定で取ってみる(Su...
headers = message.getHeader("Subject");
for (String header : headers) {
System.out.println(header);
}
System.out.println("デコード↑してくれない");
System.out.println("---- 専用のメソッドで取ってみる(...
System.out.println(message.getSubject());
System.out.println("デコード↑してくれた");
System.out.println("---- 専用のメソッドで取ってみる(...
Address[] allRecipients = message.getAllRecipients();
for (Address address : allRecipients) {
System.out.println(address);
}
System.out.println("---- メール本体の取得 ----");
System.out.println(message.getContent());
System.out.println("--------");
}
}
結果は以下の通りです
---- 全ヘッダをリストします ----
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 [20...
by mail.hogehoge.jp (Postfix) with ESMTP id A75B1408BE
for <toaddress@hogehoge.jp>; Sun, 18 May 2008 01:13:12 ...
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.c...
MIME-Version : 1.0
Content-Type : text/plain; charset="ISO-2022-JP"
Content-Transfer-Encoding : 7bit
X-Mailer : Becky! ver. 2.31 [ja]
---- 全ヘッダ 以上 ----
---- ヘッダ名指定で取ってみる(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 ...
from [127.0.0.1]
by fuga.so-net.ne.jp with ESMTP id m4HGD9n9027300;
Sun, 18 May 2008 01:13:09 +0900 (JST)
---- ヘッダ名指定で取ってみる(Return-Path) ----
<fromaddress@hogehoge.com>
---- ヘッダ名指定で取ってみる(Subject) ----
=?ISO-2022-JP?B?GyRCJUYlOSVIJWEhPCVrISobKEI=?=
デコード↑してくれない
---- 専用のメソッドで取ってみる(Subject) ----
テストメール!
デコード↑してくれた
---- 専用のメソッドで取ってみる(To) ----
toaddress@hogehoge.jp
---- メール本体の取得 ----
メールのテストです。
end。
--------
<>とかの微妙な装飾まで細かな解析はしてくれないみたいで...
***パイプされた標準入力からメールを読み取る [#fd81b0d5]
次に実際に標準入力からやってみます。
public static void main(String[] args) {
try {
InputStream in = System.in;
Session session = Session.getDefaultInstance(
new java.util.Properties(), null);
MimeMessage message = new MimeMessage(session, in);
print(message);
} catch (MessagingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
ストリームとして標準入力を渡しています。では実際にUnix上...
[hoge@www Test]$ export CLASSPATH=lib/mail.jar:lib/sampl...
[hoge@www Test]$ cat mail.dummy.txt | java nu.mine.kino....
書きませんが先と同じ結果が得られました。
ちなみにパイプしない場合は入力待ちになります。色々入力後C...
**関連リンク [#w3fb37e8]
[[メーリングリストの構築と運用(前編)(4/4)>http://www....
----
この記事は
#vote(おもしろかった[53],そうでもない[16])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: