jamesとozacc-mail library(OML) 1.2-rc7を使ったメールのテスト

Windowsで動くウェブ開発専用のSMTP・POPサーバ を参考にメール配信のテストを書いて見ました。この方法だとDBのテストと同じ感覚でテストができました。

1.上記のエントリーに従って、jamesをセットアップする
2.テストケースのsetUpメソッドで、受信するメールボックスをクリアしておく。OMLのFetchMailImplクラスを使うと簡単にできます。

FetchMailImpl fetchMail = new FetchMailImpl();
fetchMail.setHost("default.local");
fetchMail.setPort(1110);
fetchMail.setUsername(username);
fetchMail.setPassword(password);
ReceivedMail[] mails = fetchMail.getMails(true); // メールの受信とメールボックスからの削除

3.テストを実行します。
4.OMLのFetchMailImplを使ってメールを受信して、件名や本文のアサートを行います。これはS2TestCase#assertBeanListEqualsを使ってエクセルと比較すれば簡単です。

基本はDBのテストと同じで、「メールボックスの初期化」→「テストの実行」→「メールボックスがこうなっているはず!という確認」の流れになります。

ozacc-mail library(OML) 1.2への要望

SendMailImplクラスを使ってメール送信後に、引数で渡したMailオブジェクトからMessage-Idが取れるとうれしいなぁ。
今は以下のコードでなんとか取得しています。

 *** SendMailImpl.java
 --- SendMailImpl2.java
 ***************
 *** 108,113 ****
 --- 108,116 ----
  
                         // MimeMessage??????
                         MimeMessage message = createMimeMessage(session);
 +                       if (isMessageIdCustomized()) {
 +                           mail.addHeader("Message-Id", ( (OMLMimeMessage)message).getMessageId());
 +                       }
                         MimeMessageBuilder builder = new MimeMessageBuilder(message);
                         try {
                                 builder.buildMimeMessage(mail);