メール送信
JAVAでのメール送信方法です。
とにかくネットで検索しますと、どれもこれも
http://java.sun.com/products/javamail/ (JavaMail)
http://java.sun.com/products/javabeans/glasgow/jaf.html (JAF)
の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