javamail入門

javamail入門という面白そうな本があったので、ちょっとやってみる。 javamailとかJAFとかを入れてみるがちゃんと動かない。 いつ入れたのか定かでないSDKを消して、入れなおす。
www.oracle.com/technetwork/java/javase/downloads/jdk-7u1-download-513651.html

インストーラが起動する。 デフォルトではデモをインストールしないようになっているが、インストールする。 インストール後、ユーザー登録画面が出てくる。 ついでなので登録しておく。

pathの登録が必要。

F:\Program Files\Java\jdk1.7.0_01\bin


言い忘れたけど Windows XPです。 昔書いたhello,world的なサンプルをコンパイルしてみる。

エラーになる。 ファイル名とクラス名が同じでないといけないのを思い出して、ちゃんと同じになっているものをコンパイルして動くことを確認する。

javamailは解凍したフォルダを program files\java に移しておき、 環境変数を登録する。 CLASSPATHのところに、mail.jarのフルパスを書く。

F:\Program Files\Java¥javamail-1.4.4\mail.jar;


ファイル名まで書かなければならない。 ということはjarを入れるたびに常にclasspathを書き換える必要があるのか?メンドクサイ・・・ と思うがそれはおいておく。

demoの msgshow.javaをコンパイルする。 classpathがうまく登録されていなかったり反映していないと、エラーが大量に出る。

ちなみに、WindowsXPの環境変数の変更は、 Program Files のように間にスペースがあっても""で囲んだりする必要はない。 コマンドプロンプトを起動していた場合は、そのままでは反映しない。(setをやってみるとわかる)。 コマンドプロンプトをいったん閉じて起動し直すと反映する。ログオフや再起動の必要はない。

実行してみた。

F:\Program Files\Java\javamail-1.4.4\demo>java msgshow -T pop3 -H example.com -U hoge -P xxxxxxx
--------------------------
MESSAGE #1:
This is the message envelope
---------------------------
FROM: John Lennon <john@example.com>
REPLY TO: John Lennon <john@example.com>
TO: hoge@example.com
SUBJECT: test
SendDate: Mon Oct 24 16:10:05 JST 2011
FLAGS:
X-Mailer NOT available

F:\Program Files\Java\javamail-1.4.4\demo>


感動。

じゃあ送信をやってみようと思ったら、うまくいかない。サーバはさくらのVPSを使っていたのだが、25番ポートがどうしても開かなかった。しかたがないので587番に変えた。ところがデモは25番を使っていて、ポートの指定はできなかった。さっそく改変の必要が生じた。しかしこんなのは簡単で、argvを格納しているところに新しい引数と変数を作り、

if (port != null)
props.put("mail.smtp.port", port);


とするだけでOKだった。ちなみにいじったのは msgsend.java である。