メール送信

JAVAでのメール送信方法です。


とにかくネットで検索しますと、どれもこれも
http://java.sun.com/products/javamail/ (JavaMail)
http://java.sun.com/products/javabeans/glasgow/jaf.htmlJAF
のmail.jar、activation.jarが必要とあります。


http://java.sun.com/products/javamail/にアクセスしますと、
JavaMail API 1.4.4 ReleaseということでJavaMailがダウンロードできます。
しかし、http://java.sun.com/products/javabeans/glasgow/jaf.htmlにアクセスしても
別のページにとばされてダウンロードができません。
しかも、JavaMail1.4.4にはmail.jarがありません。困りました…

代わりにmailapi.jarがありました。
このmailapi.jarを利用するとメール送信ができました。
サーバーのlibにもmailapi.jar mail.jarを置いておきましょう。activation.jarは無くてもいいみたい。
UTF-8のメール送信サーブレットコードをコンパイルするにはこんな感じになります。

javac -encoding UTF-8 -classpath D:\Tomcat7\lib\servlet-api.jar;D:\Tomcat7\lib\mailapi.jar Sample.java
javac -encoding UTF-8 -classpath D:\Tomcat7\lib\servlet-api.jar;D:\Tomcat7\lib\mail.jar Sample.java

コマンドプロンプトではUTF-8であることを指定しなければコンパイルがとおりませんでした。


サンプルコード

import javax.mail.*;
import javax.mail.Message.*;
import javax.mail.internet.*;


Properties objPrp=new Properties();
objPrp.put("mail.smtp.host","localhost"); // SMTPサーバ名
objPrp.put("mail.host","localhost"); // 接続するホスト名
// メールセッションを確立
Session session=Session.getDefaultInstance(objPrp,null);
// 送信メッセージを生成
MimeMessage objMsg=new MimeMessage(session);
try {
 long timeNow = System.currentTimeMillis();
// 送信先(TOのほか、CCやBCCも設定可能)
 objMsg.addRecipient(Message.RecipientType.TO, new InternetAddress("to@b.c"));//setRecipient,setRecipients,addRecipient,addRecipients
 objMsg.setRecipient(Message.RecipientType.BCC, new InternetAddress("bcc@b.c"));//動かない????
// Fromヘッダ
 InternetAddress objFrm=new InternetAddress("from@b.c","しゃちょー");

 objMsg.setFrom(objFrm);
// 件名
 objMsg.setSubject("テスト送信","ISO-2022-JP");

// 本文
 objMsg.setText("て\r\nす\r\nと","ISO-2022-JP");

// メール送信
 Transport.send(objMsg);
} catch (UnsupportedEncodingException e) {
 e.printStackTrace();
} catch (MessagingException e) {
 e.printStackTrace();
}

Toを指定しているところでsetRecipientとあるがaddRecipientでもいいみたいで違いがわかりません。
複数の場合はsetRecipientsもしくはaddRecipientsで配列でアドレスを指定してあげる。
ネットではBcc指定できる見たいだけど、メールはやってこないので何か間違っている??


03/03修正
指摘を受けて見てみたらmail.jarありました(/ω\) 指摘ありがとうございます。m(__)m