パッケージ jakarta.mail


パッケージ jakarta.mail
Jakarta Mail API は、メールシステムをモデル化するクラスを提供します。jakarta.mail パッケージは、すべてのメールシステムに共通のクラスを定義します。jakarta.mail.internet パッケージは、MIME、SMTP、POP3、IMAP などのインターネット標準に基づくメールシステムに固有のクラスを定義します。Jakarta Mail API には、jakarta.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 プロパティを設定します。

Jakarta Mail プロパティ
名前 タイプ 説明
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 の EE4J 実装でサポートされていますが、現在、仕様の必須部分ではありません。これらのプロパティの名前、型、デフォルト、セマンティクスは、将来のリリースで変更される可能性があります。

Jakarta Mail 実装プロパティ
名前 タイプ 説明
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 イベントの範囲を制御します。(jakarta.mail.event パッケージを参照してください)デフォルトでは、ストア、トランスポート、フォルダーごとに、個別のイベントキューとスレッドがイベントに使用されます。このプロパティが「セッション」に設定されている場合、そのようなすべてのイベントは、現在のセッションの単一のスレッドによって処理される単一のイベントキューに入れられます。このプロパティが "application" に設定されている場合、そのようなすべてのイベントは、現在のアプリケーションの単一のスレッドによって処理される単一のイベントキューに入れられます。(アプリケーションは、コンテキストクラスローダーによって区別されます。)
mail.event.executorjava.util.concurrent.Executor デフォルトでは、イベントキューごとに新しいスレッドが作成されます。このスレッドは、これらのイベントのリスナーを呼び出すために使用されます。このプロパティが Executor のインスタンスに設定されている場合、Executor.execute メソッドを使用して、イベントキューのイベントディスパッチャーを実行します。イベントディスパッチャーは、イベントキューが使用されなくなるまで実行されます。

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

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

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

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

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

Jakarta Mail Loggers
ロガー名 ログレベル 目的
jakarta.mailCONFIG セッションの構成
jakarta.mailFINE 一般的なデバッグ出力
  • クラス
    説明
    この抽象クラスは、メッセージ内のアドレスをモデル化します。
    この例外は、認証の失敗(ユーザー名やパスワードの誤りなど)が原因で Store または Transport オブジェクトの接続メソッドが失敗した場合にスローされます。
    クラス Authenticator は、ネットワーク接続の認証を取得する方法を知っているオブジェクトを表します。
    このクラスは、マルチパートに含まれるパートをモデル化します。
    EncodingAware も実装する DataSource は、データに使用する Content-Transfer-Encoding を指定できます。
    クライアントは、FetchProfile を使用して、メッセージの範囲についてサーバーからプリフェッチするメッセージ属性をリストします。
    この内部クラスは、FetchProfile でリクエストできるすべてのアイテムの基本クラスです。
    Flags クラスは、メッセージのフラグのセットを表します。
    この内部クラスは、個々のシステムフラグを表します。
    Folder は、メールメッセージのフォルダーを表す抽象クラスです。
    この例外は、メッセージオブジェクトでメソッドが呼び出され、そのオブジェクトを所有するフォルダーが何らかの理由で停止した場合にスローされます。
    この例外は、Folder メソッドが存在しないフォルダーで呼び出された場合にスローされます。
    Header クラスは、ヘッダーを表す名前と値のペアを格納します。
    任意のメッセージングオブジェクトの読み取り専用属性で書き込みが試行されたときにスローされる例外。
    JNDI に登録される MailSession を定義するために Jakarta EE アプリケーションによって使用されるアノテーション。
    1 つ以上の MailSessionDefinition アノテーションを宣言します。
    このクラスは、メールメッセージをモデル化します。
    この内部クラスは、メッセージクラスで許可される受信者の型を定義します。
    データコンテンツオブジェクトが動作しているメッセージコンテキストに関する情報を DataContentHandler に提供するために、DataSources によってオプションで実装されるインターフェース。
    メッセージコンテンツが含まれるコンテキスト。
    消去されたメッセージに対して無効なメソッドが呼び出されたときにスローされる例外。
    メッセージングクラスによってスローされたすべての例外の基本クラス
    メソッドが実装でサポートされていない場合にスローされる例外
    マルチパートは、複数のボディパーツを保持するコンテナーです。
    MultipartDataSource は、ボディパーツを含む DataSource です。
    この例外は、Session が存在しないプロバイダーをインスタンス化しようとしたときにスローされます。
    Part インターフェースは、メッセージと BodyParts の共通の基本インターフェースです。
    クラス PasswordAuthentication は、Authenticator によって使用されるデータホルダーです。
    プロバイダーは、プロトコルの実装を記述するクラスです。
    この内部クラスは、プロバイダー型を定義します。
    このクラスは、特定のクォータルートのクォータのセットを表します。
    クォータルート内の個々のリソース。
    クォータをサポートするストアによって実装されるインターフェース。
    この例外は、フォルダーが読み取り専用としてマークされているときにフォルダーの読み取り / 書き込みアクセスを開こうとするとスローされます。
    この例外は、メッセージを送信できない場合にスローされます。
    ストアやトランスポートなどのメッセージングサービスに共通の機能を含む抽象クラス。
    Session クラスはメールセッションを表し、サブクラス化されていません。
    メッセージを格納および取得するために、メッセージストアとそのアクセスプロトコルをモデル化する抽象クラス。
    この例外は、メッセージオブジェクトでメソッドが呼び出され、そのオブジェクトを所有するストアが何らかの理由で停止した場合にスローされます。
    メッセージ転送をモデル化する抽象クラス。
    UIDFolder インターフェースは、フォルダー内のメッセージに一意の ID を提供することにより、「切断」操作モードをサポートできるフォルダーによって実装されます。
    UID をフェッチするためのフェッチプロファイル項目。
    URL の名前。