ナビゲーションリンクをスキップ

Jakarta EE 8 仕様 API

パッケージ javax.mail

Jakarta Mail API は、メールシステムをモデル化するクラスを提供します。

参照先: 説明

パッケージ javax.mail の説明

Jakarta Mail API は、メールシステムをモデル化するクラスを提供します。javax.mail パッケージは、すべてのメールシステムに共通のクラスを定義します。javax.mail.internet パッケージは、MIME、SMTP、POP3、IMAP などのインターネット標準に基づくメールシステムに固有のクラスを定義します。Jakarta Mail API には、javax.mail パッケージとサブパッケージが含まれています。

Jakarta Mail API の概要については、 Jakarta Mail 仕様を参照してください。

プレーンテキストメッセージを送信するコードは、次のように簡単です。

    Properties props = new Properties();
    props.put("mail.smtp.host", "my-mail-server");
    Session session = Session.getInstance(props, null);

    try {
        MimeMessage msg = new MimeMessage(session);
        msg.setFrom("me@example.com");
        msg.setRecipients(Message.RecipientType.TO,
                          "you@example.com");
        msg.setSubject("Jakarta Mail hello world example");
        msg.setSentDate(new Date());
        msg.setText("Hello, world!\n");
        Transport.send(msg, "me@example.com", "my-password");
    } catch (MessagingException mex) {
        System.out.println("send failed, exception: " + mex);
    }

Jakarta Mail ダウンロードバンドルの "demo" ディレクトリには、より完全なサンプルが多数含まれています。

最も一般的な質問への回答については、 Jakarta Mail API FAQ を参照することを忘れないでください。 Jakarta Mail Web サイトには、多くの追加リソースが含まれています。

プロパティ

Jakarta Mail API は、Session オブジェクト、または Session オブジェクトの作成に使用される Properties オブジェクトで設定できる次の標準プロパティをサポートしています。プロパティは常に文字列として設定されます。Type 列は、文字列の解釈方法を示します。例: 使用

        props.put("mail.debug", "true");

ブール型の mail.debug プロパティを設定します。

名前 タイプ 説明
mail.debugboolean 初期デバッグモード。デフォルトは false です。
mail.fromStringInternetAddress メソッド getLocalAddress で使用される現在のユーザーの返信用メールアドレス。
mail.mime.address.strictbooleanMimeMessage クラスは、InternetAddress メソッド parseHeader を使用してメッセージのヘッダーを解析します。このプロパティは、parseHeader メソッドに渡される厳密なフラグを制御します。デフォルトは true です。
mail.hostString ストアとトランスポートの両方のメールサーバーのデフォルトのホスト名。mail.protocol.host プロパティが設定されていない場合に使用されます。
mail.store.protocolString デフォルトのメッセージアクセスプロトコルを指定します。Session メソッド getStore() は、このプロトコルを実装する Store オブジェクトを返します。デフォルトでは、構成ファイルの最初のストアプロバイダーが返されます。
mail.transport.protocolString デフォルトのメッセージ転送プロトコルを指定します。Session メソッド getTransport() は、このプロトコルを実装する Transport オブジェクトを返します。デフォルトでは、構成ファイルの最初のトランスポートプロバイダーが返されます。
mail.userString メールサーバーに接続するときに使用するデフォルトのユーザー名。mail.protocol.user プロパティが設定されていない場合に使用されます。
mail.protocol.classString 指定されたプロトコルのプロバイダーの完全修飾クラス名を指定します。特定のプロトコルに複数のプロバイダーが存在する場合に使用されます。このプロパティを使用して、デフォルトで使用するプロバイダーを指定できます。プロバイダーは引き続き構成ファイルにリストされている必要があります。
mail.protocol.hostString 指定したプロトコルのメールサーバーのホスト名。mail.host プロパティをオーバーライドします。
mail.protocol.portint 指定したプロトコルのメールサーバーのポート番号。指定しない場合、プロトコルのデフォルトのポート番号が使用されます。
mail.protocol.userString 指定されたプロトコルを使用してメールサーバーに接続するときに使用するユーザー名。mail.user プロパティをオーバーライドします。

次のプロパティは、Jakarta Mail のリファレンス実装(RI)でサポートされていますが、現時点では仕様の必須部分ではありません。これらのプロパティの名前、型、デフォルト、セマンティクスは、将来のリリースで変更される可能性があります。

名前 タイプ 説明
mail.debug.authboolean デバッグ出力にプロトコル認証コマンド(ユーザー名とパスワードを含む)を含めます。デフォルトは false です。
mail.debug.auth.usernameboolean 非プロトコルデバッグ出力にユーザー名を含めます。デフォルトは true です。
mail.debug.auth.passwordboolean 非プロトコルデバッグ出力にパスワードを含めます。デフォルトは false です。
mail.transport.protocol.address-typeString 指定されたアドレス型のデフォルトのメッセージ転送プロトコルを指定します。Session メソッド getTransport(Address) は、アドレスが指定された型(たとえば、標準インターネットアドレスの場合は "rfc822" )の場合に、このプロトコルを実装するトランスポートオブジェクトを返します。デフォルトでは、そのアドレス型に設定された最初のトランスポートが使用されます。このプロパティを使用して、Transport クラスの send メソッドの動作をオーバーライドできるため、たとえば、プロパティ mail.transport.protocol.rfc822 を "smtps" に設定することにより、"smtp" プロトコルの代わりに "smtps" プロトコルが使用されます。
mail.event.scopeString イベントのスコープを制御します。(javax.mail.event パッケージを参照してください)デフォルトでは、各ストア、トランスポート、フォルダーのイベントには、個別のイベントキューとスレッドが使用されます。このプロパティが「セッション」に設定されている場合、そのようなイベントはすべて、現在のセッションの単一のスレッドによって処理される単一のイベントキューに入れられます。このプロパティが「アプリケーション」に設定されている場合、そのようなイベントはすべて、現在のアプリケーションの単一のスレッドによって処理される単一のイベントキューに入れられます。(アプリケーションは、コンテキストクラスローダーによって区別されます。)
mail.event.executorjava.util.concurrent.Executor デフォルトでは、イベントキューごとに新しいスレッドが作成されます。このスレッドは、これらのイベントのリスナーを呼び出すために使用されます。このプロパティが Executor のインスタンスに設定されている場合、Executor.execute メソッドを使用して、イベントキューのイベントディスパッチャーを実行します。イベントディスパッチャーは、イベントキューが使用されなくなるまで実行されます。

Jakarta Mail API はいくつかのシステムプロパティもサポートしています。詳細については、javax.mail.internet パッケージのドキュメントを参照してください。

Jakarta Mail リファレンス実装には、com.sun.mail のサブパッケージにプロトコルプロバイダーが含まれています。これらのプロトコルプロバイダーへの API は、標準の Jakarta Mail API の一部ではないことに注意してください。移植可能なプログラムはこれらの API を使用しません。

移植性のないプログラムは、(たとえば)返された Folder オブジェクトを com.sun.mail.imap.IMAPFolder オブジェクトにキャストすることにより、プロトコルプロバイダーの API を使用できます。同様に、Store および Message オブジェクトの場合、標準の Jakarta Mail API から返されます。

プロトコルプロバイダーは、それらのプロバイダーに固有のプロパティもサポートします。IMAPPOP3SMTP パッケージのパッケージドキュメントに詳細が記載されています。

Session 構成によって制御されるデバッグ出力の出力に加えて、このパッケージのクラスの現在の実装では、次の表で説明するように、LoggerSE を使用して同じ情報を記録します。

ロガー名 ログレベル 目的
javax.mailCONFIG セッションの構成
javax.mailFINE 一般的なデバッグ出力
ナビゲーションリンクをスキップ

Jakarta EE 8 仕様 API

Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.