Oracle Cloud Infrastructureドキュメント

JavaMailと電子メール配信の統合

JavaMailは、プラットフォームに依存しない、プロトコルに依存しないフレームワークを提供して、メール・アプリケーションやメッセージング・アプリケーションを作成します。 JavaMailを使用する前に、電子メール配信を構成し、SMTPの送信情報およびSMTP資格証明を記録する必要があります。 このガイドでは、Eclipse IDEおよびJavaMail APIを使用して、電子メール配信を通じて電子メールを送信します。

重要

最新のプロトコル、暗号およびセキュリティ・パッチがOracleでサポートされているセキュリティ・ポリシーおよび暗号に準拠していることを確認するには、Javaアプリケーション(JavaMailを含む)を最新バージョンに更新する必要があります。

電子メール配信を介して電子メールを送信するようJavaMailを構成

JavaMailを有効にして電子メール配信の構成をテストするには:

  1. 電子メールを送信するように「電子メール配信」が構成されていることを確認します。 「電子メール配信の開始」も参照してください。

ノート

電子メール配信を使用するようにJavaMailを構成するには、SMTP資格証明が必要です。 SMTP資格証明の生成時には、ユーザー名とパスワードを忘れないでください。

  1. ブラウザを開き、https://github.com/javaee/javamail/releasesに移動します。
  2. 「ダウンロード」で、javax.mail.jarを選択して、最新バージョンのJavaMailをダウンロードします。
  3. 次のステップを実行して、Eclipseにプロジェクトを作成します:
    1. Eclipseで、「ファイル」メニューを開きます。 「新規」を選択し、「Javaプロジェクト」をクリックします。
    2. 「Javaプロジェクト」の作成ダイアログ・ボックスで、プロジェクト名を入力し、「次」をクリックします。
    3. 「Javaの設定」ダイアログ・ボックスで、「ライブラリ」タブを選択します。
    4. 外部JARを追加.をクリックします。
    5. 「JARの選択」ダイアログ・ボックスで、JavaMailをダウンロードしたフォルダを参照します。 javax.mail.jarファイルを選択し、「開く」をクリックします。
    6. 「Javaの設定」ダイアログ・ボックスで、「終了」をクリックします。
  4. Eclipseのパッケージ・エクスプローラ・ウィンドウで、プロジェクトを展開します。
  5. プロジェクトの下でsrcディレクトリを右クリックし、「新規」を選択して「クラス」をクリックします。
  6. 「新規Javaクラス」ダイアログ・ボックスで、「名前」フィールドに"OCIemail"と入力し、「終了」をクリックします。
  7. OCIemail.javaに次のコードを入力して、JavaMailにテスト電子メールを送信:

    import java.util.Properties;
    import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
     
    public class OCIemail {
     
        // Replace FROM with your "From" address.
        // This address must be added to Approved Senders in the console.
        static final String FROM = "<sender email address>";
        static final String FROMNAME = "<sender name>";
     
        // Replace TO with a recipient address.
        static final String TO = "<recipient email address>";
     
        // Replace smtp_username with your Oracle Cloud Infrastructure SMTP username generated in console.
        static final String SMTP_USERNAME = "<username OCID from SMTP credentials>";
     
        // Replace smtp_password with your Oracle Cloud Infrastructure SMTP password generated in console.
        static final String SMTP_PASSWORD = "<SMTP password>";
     
        // Oracle Cloud Infrastructure Email Delivery hostname.
        static final String HOST = "<SMTP endpoint>";
     
        // The port you will connect to on the SMTP endpoint. Port 25 or 587 is allowed.
        static final int PORT = 587;
     
           static final String SUBJECT = "<subject of your email>";
           static final String BODY = String.join(
     
               System.getProperty("line.separator"),
               "<h1>OCI Email Delivery test</h1>",
               "<p>This email was sent with OCI Email Delivery using the ",
               "<a href='Javamail'>https://github.com/javaee/javamail'>Javamail Package</a>",
              " for <a href='Javahttps://www.java.com'>Java</a>."
     
           );
     
        public static void main(String[] args) throws Exception {
     
            // Create a Properties object to contain connection configuration information.
     
           Properties props = System.getProperties();
           props.put("mail.transport.protocol", "smtp");
           props.put("mail.smtp.port", PORT);
     
           //props.put("mail.smtp.ssl.enable", "true"); //the default value is false if not set
           props.put("mail.smtp.auth", "true");
           props.put("mail.smtp.auth.login.disable", "true");  //the default authorization order is "LOGIN PLAIN DIGEST-MD5 NTLM". 'LOGIN' must be disabled since Email Delivery authorizes as 'PLAIN'
           props.put("mail.smtp.starttls.enable", "true");   //TLSv1.2 is required
           props.put("mail.smtp.starttls.required", "true");  //Oracle Cloud Infrastructure required
     
            // Create a Session object to represent a mail session with the specified properties.
           Session session = Session.getDefaultInstance(props);
     
            // Create a message with the specified information.
            MimeMessage msg = new MimeMessage(session);
            msg.setFrom(new InternetAddress(FROM,FROMNAME));
            msg.setRecipient(Message.RecipientType.TO, new InternetAddress(TO));
            msg.setSubject(SUBJECT);
            msg.setContent(BODY,"text/html");
     
            // Create a transport.
            Transport transport = session.getTransport();
               
     
            // Send the message.
     
            try
            {
     
                System.out.println("Sending Email now...standby...");
     
     
                // Connect to OCI Email Delivery using the SMTP credentials specified.
                transport.connect(HOST, SMTP_USERNAME, SMTP_PASSWORD);    
     
                // Send email.
                transport.sendMessage(msg, msg.getAllRecipients());
                System.out.println("Email sent!");
     
            }
     
            catch (Exception ex) {
     
                System.out.println("The email was not sent.");
                System.out.println("Error message: " + ex.getMessage());
     
            }
     
            finally
     
            {
     
                // Close & terminate the connection.
                transport.close();
     
            }
     
        }
     
    }
  8. OCIemail.javaファイルで、次の部分を独自の値に置き換えます:

    ノート

    電子メール・アドレスは大/小文字が区別されます。 アドレスが、コンソールの承認された送信者で入力したものと同じであることを確認します。

    • FROM - 送信者の電子メール・アドレスに置き換えてください。 この電子メール・アドレスは、まず電子メール配信の承認済送信者リストに追加する必要があります。
    • TO - 受信者の電子メール・アドレスに置換します。
    • 「SMTP資格証明」 - smtp_usernameおよびsmtp_passwordを、コンソールで生成されるOracle Cloud Infrastructure SMTPのユーザー名およびパスワードに置き換えます。
    • HOST - 電子メール配信 SMTPエンドポイントに置き換えます。 例: smtp.us-ashburn-1.oraclecloud.com。
  9. 「電子メール配信」を使用した「SMTP接続の構成」の要件を参照してください。 「電子メール配信」にはTLSv1.2が必要です。 Javamailの一部のデフォルト設定を無効にする必要があります。 たとえば、JavaMailは特定の順序で認可します。 デフォルトの認可順序は"LOGIN PLAIN DIGEST-MD5 NTLM"です。 電子メール配信は"PLAIN"として認可されているため、"LOGIN"を無効にする必要があります。 たとえば、OCIemail.javaファイルに次のコードを入力してSMTP接続を構成します:

      //props.put("mail.smtp.ssl.enable", "true"); //default is false if not set
           props.put("mail.smtp.auth", "true");
           props.put("mail.smtp.auth.login.disable", "true"); 
           props.put("mail.smtp.starttls.enable", "true"); 
           props.put("mail.smtp.starttls.required", "true"); 
  10. 「ファイル」メニューを開き、「保存」をクリックします。
  11. プロジェクトをビルドするには、「プロジェクト」メニューを開き、「プロジェクトのビルド」を選択します。 このオプションが無効な場合は、自動構築が有効になっている可能性があります。
  12. プログラムを開始して電子メールを送信するには、「実行」メニューを開き、「実行」をクリックします。
  13. 出力を確認します。 電子メールが正常に送信された場合、コンソールに"電子メールが正常に送信されました。"と表示されます。 それ以外の場合は、エラー・メッセージが表示されます。
  14. 受信者の受信ボックスにログインし、電子メールの受信を確認します。

詳細情報

  • 詳細は、JavaMailのドキュメントを参照してください。