Javaによるメール送信
JavaMail(javax.mail)は、Javaでメールアプリケーションを作成するためのライブラリです。Customers Mail Cloudは、DNSラウンドロビンによるシステム冗長化に対応したJavaライブラリを提供します。
SMTPホスト名
以下のSMTPホスト名を、JavaMailのプロパティ "mail.smtp.host" に指定します。
サービスプラン | SMTPホスト名 |
---|---|
無料トライアル | sandbox.smtps.jp |
Standard | te.smtps.jp |
Pro | SUBDOMAIN.smtps.jp (SUBDOMAINは各ユーザに割り当てたドメイン) |
ライブラリ
JavaMail標準のTransportクラスの代わりに使用することができるCMCTransportクラスを提供します。
CMCTransportはDNSラウンドロビンに対応しており、メールトラフィックを2台以上のリレーサーバに負荷分散するとともに、障害発生時は正常に動作しているメールサーバにSMTP接続を自動的にリトライする制御を行っています。
ライブラリは、以下をダウンロードして使用してください。本ライブラリは、Apache License Version 2.0 で提供します。
サンプルコード
JavaMailとCMCTransportクラスを使用したサンプルコードです。
package jp.co.hde.mail.smtp;
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.SendFailedException;
import javax.mail.Session;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import junit.framework.TestCase;
public class CMCTransportTest extends TestCase {
/**
* SMTP認証を使ってメールを送信する
* username, password にはAPIユーザ設定にて作成した
* APIユーザ名とAPIキーを指定します。
*/
public void testSendMessageWithAuth() throws MessagingException {
try {
// メッセージを生成する
Message message = setup();
// SMTP認証を使ってメールを送信する
CMCTransport.send(message, "username", "password");
} catch (SendFailedException e) {
fail(e.getMessage());
}
}
/**
* SMTP認証を使わずにメールを送信する
* サービスプラン Pro でIPアクセス認証を設定した場合、
* SMTP認証無しでメールを送信することができます。
*/
public void testSendMessage() {
try {
// メッセージを生成する
Message message = setup();
// メールを送信する
CMCTransport.send(message));
} catch (SendFailedException e) {
fail(e.getMessage());
}
}
private Message setup() {
// Properties を作成して、SMTPホスト名を設定する。
Properties prop = new Properties();
prop.put("mail.smtp.host", "SUBDOMAIN.smtps.jp");
// Session を作成する
// getDefaultInstance はシングルトンのSessionオブジェクトを
// 返却するため、CMCTransportが正常に動作しません。
// 必ず getInstance メソッドを使用して Session オブジェクトを
// 作成してください。
Session session = Session.getInstance(prop);
// Message を作成する
MimeMessage message = new MimeMessage(session);
try {
// 宛先(To)アドレスを設定
message.setRecipient(RecipientType.TO,
new InternetAddress("sample@smtps.jp"));
// 差出人(From)アドレスを設定
message.setFrom(
new InternetAddress("sample@smtps.jp"));
// 送信日時(Date)を設定
message.setSentDate(new Date());
// メールの件名を設定
message.setSubject("【自動返信】お問い合わせについて", "ISO-2022-JP");
// メール本文を設定
message.setText(
"HENNGE株式会社\r\n" +
"山田太郎様\r\n" +
"\r\n" +
"この度は当社サービスへのお問い合わせ誠にありがとうございます。\r\n" +
"お問い合わせにつきまして折り返しご連絡いたします。\r\n" +
"いましばらくお時間頂けますよう宜しくお願いいたします。\r\n",
"ISO-2022-JP");
// Content-Transfer-Encoding を 7bit に設定
message.setHeader("Content-Transfer-Encoding", "7bit");
} catch (AddressException e) {
fail(e.getMessage());
} catch (MessagingException e) {
fail(e.getMessage());
}
// 作成したメッセージを返却
return message;
}
}