Javaによるメール送信

2026/08/21更新

    Javaライブラリの提供について

    本ライブラリは、Apache License Version 2.0 に基づきソースコードを含めて提供しておりますが、技術サポートおよびメンテナンスは終了しております。今後の拡張や不具合対応については、ライセンス条項に基づき、お客様ご自身でのソースコードの修正・運用をお願いいたします。

    JavaMail(javax.mail)は、Javaでメールアプリケーションを作成するためのライブラリです。Customers Mail Cloudは、DNSラウンドロビンによるシステム冗長化に対応したJavaライブラリを提供します。

    SMTPホスト名

    以下のSMTPホスト名を、JavaMailのプロパティ "mail.smtp.host" に指定します。

    サービスプラン

    SMTPホスト名

    無料トライアル

    sandbox.smtps.jp

    Standard

    te.smtps.jp

    Business / Enterprise / OEM / 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認証を使わずにメールを送信する
        * サービスプラン Business / Enterprise / OEM / 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;
        }
    }

    サポート一覧へ戻る

    Download

    変革を、ここから始める