パッケージ jakarta.mail
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
プロパティを設定します。
名前 | タイプ | 説明 |
---|---|---|
mail.debug | boolean | 初期デバッグモード。デフォルトは false です。 |
mail.from | String | InternetAddress メソッド getLocalAddress で使用される現在のユーザーの返信用メールアドレス。 |
mail.mime.address.strict | boolean | MimeMessage クラスは、InternetAddress メソッド parseHeader を使用してメッセージのヘッダーを解析します。このプロパティは、parseHeader メソッドに渡される厳密なフラグを制御します。デフォルトは true です。 |
mail.host | String | ストアとトランスポートの両方のメールサーバーのデフォルトのホスト名。mail.protocol.host プロパティが設定されていない場合に使用されます。 |
mail.store.protocol | String | デフォルトのメッセージアクセスプロトコルを指定します。Session メソッド getStore() は、このプロトコルを実装する Store オブジェクトを返します。デフォルトでは、構成ファイルの最初のストアプロバイダーが返されます。 |
mail.transport.protocol | String | デフォルトのメッセージ転送プロトコルを指定します。Session メソッド getTransport() は、このプロトコルを実装する Transport オブジェクトを返します。デフォルトでは、構成ファイルの最初のトランスポートプロバイダーが返されます。 |
mail.user | String | メールサーバーに接続するときに使用するデフォルトのユーザー名。mail.protocol.user プロパティが設定されていない場合に使用されます。 |
mail.protocol.class | String | 指定されたプロトコルのプロバイダーの完全修飾クラス名を指定します。特定のプロトコルに複数のプロバイダーが存在する場合に使用されます。このプロパティを使用して、デフォルトで使用するプロバイダーを指定できます。プロバイダーは引き続き構成ファイルにリストされている必要があります。 |
mail.protocol.host | String | 指定したプロトコルのメールサーバーのホスト名。mail.host プロパティをオーバーライドします。 |
mail.protocol.port | int | 指定したプロトコルのメールサーバーのポート番号。指定しない場合、プロトコルのデフォルトのポート番号が使用されます。 |
mail.protocol.user | String | 指定されたプロトコルを使用してメールサーバーに接続するときに使用するユーザー名。mail.user プロパティをオーバーライドします。 |
次のプロパティは、Jakarta Mail の EE4J 実装でサポートされていますが、現在、仕様の必須部分ではありません。これらのプロパティの名前、型、デフォルト、セマンティクスは、将来のリリースで変更される可能性があります。
名前 | タイプ | 説明 |
---|---|---|
mail.debug.auth | boolean | デバッグ出力にプロトコル認証コマンド(ユーザー名とパスワードを含む)を含めます。デフォルトは false です。 |
mail.debug.auth.username | boolean | 非プロトコルデバッグ出力にユーザー名を含めます。デフォルトは true です。 |
mail.debug.auth.password | boolean | 非プロトコルデバッグ出力にパスワードを含めます。デフォルトは false です。 |
mail.transport.protocol.address-type | String | 指定されたアドレス型のデフォルトのメッセージ転送プロトコルを指定します。Session メソッド getTransport(Address) は、アドレスが指定された型(たとえば、標準インターネットアドレスの場合は "rfc822" )の場合に、このプロトコルを実装するトランスポートオブジェクトを返します。デフォルトでは、そのアドレス型に設定された最初のトランスポートが使用されます。このプロパティを使用して、Transport クラスの send メソッドの動作をオーバーライドできるため、たとえば、プロパティ mail.transport.protocol.rfc822 を "smtps" に設定することにより、"smtp" プロトコルの代わりに "smtps" プロトコルが使用されます。 |
mail.event.scope | String | イベントの範囲を制御します。(jakarta.mail.event パッケージを参照してください)デフォルトでは、ストア、トランスポート、フォルダーごとに、個別のイベントキューとスレッドがイベントに使用されます。このプロパティが「セッション」に設定されている場合、そのようなすべてのイベントは、現在のセッションの単一のスレッドによって処理される単一のイベントキューに入れられます。このプロパティが "application" に設定されている場合、そのようなすべてのイベントは、現在のアプリケーションの単一のスレッドによって処理される単一のイベントキューに入れられます。(アプリケーションは、コンテキストクラスローダーによって区別されます。) |
mail.event.executor | java.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 IMAP
、com.sun.mail.pop3 POP3
、com.sun.mail.smtp SMTP
パッケージのパッケージドキュメントに詳細が記載されています。
Session
構成によって制御されるデバッグ出力の出力に加えて、このパッケージのクラスの現在の実装では、次の表で説明するように、Logger
SE を使用して同じ情報を記録します。
ロガー名 | ログレベル | 目的 |
---|---|---|
jakarta.mail | CONFIG | セッションの構成 |
jakarta.mail | FINE | 一般的なデバッグ出力 |
インターフェースのサマリー インターフェース 説明 EncodingAware EncodingAware
も実装するDataSource
は、データに使用する Content-Transfer-Encoding を指定できます。MessageAware データコンテンツオブジェクトが動作しているメッセージコンテキストに関する情報をDataContentHandler
に提供するために、DataSources
によってオプションで実装されるインターフェース。MultipartDataSource MultipartDataSource は、ボディパーツを含むDataSource
です。Part Part
インターフェースは、メッセージと BodyParts の共通の基本インターフェースです。QuotaAwareStore クォータをサポートするストアによって実装されるインターフェース。UIDFolder UIDFolder
インターフェースは、フォルダー内のメッセージに一意の ID を提供することにより、「切断」操作モードをサポートできるフォルダーによって実装されます。クラスのサマリー クラス 説明 Address この抽象クラスは、メッセージ内のアドレスをモデル化します。Authenticator クラス Authenticator は、ネットワーク接続の認証を取得する方法を知っているオブジェクトを表します。BodyPart このクラスは、マルチパートに含まれるパートをモデル化します。FetchProfile クライアントは、FetchProfile を使用して、メッセージの範囲についてサーバーからプリフェッチするメッセージ属性をリストします。FetchProfile.Item この内部クラスは、FetchProfile でリクエストできるすべてのアイテムの基本クラスです。Flags Flags クラスは、メッセージのフラグのセットを表します。Flags.Flag この内部クラスは、個々のシステムフラグを表します。Folder Folder は、メールメッセージのフォルダーを表す抽象クラスです。Header Header クラスは、ヘッダーを表す名前と値のペアを格納します。Message このクラスは、メールメッセージをモデル化します。Message.RecipientType この内部クラスは、メッセージクラスで許可される受信者の型を定義します。MessageContext メッセージコンテンツが含まれるコンテキスト。Multipart マルチパートは、複数のボディパーツを保持するコンテナーです。PasswordAuthentication クラス PasswordAuthentication は、Authenticator によって使用されるデータホルダーです。Provider プロバイダーは、プロトコルの実装を記述するクラスです。Provider.Type この内部クラスは、プロバイダー型を定義します。Quota このクラスは、特定のクォータルートのクォータのセットを表します。Quota.Resource クォータルート内の個々のリソース。Service ストアやトランスポートなどのメッセージングサービスに共通の機能を含む抽象クラス。Session Session クラスはメールセッションを表し、サブクラス化されていません。Store メッセージを格納および取得するために、メッセージストアとそのアクセスプロトコルをモデル化する抽象クラス。Transport メッセージ転送をモデル化する抽象クラス。UIDFolder.FetchProfileItem UID をフェッチするためのフェッチプロファイル項目。URLName URL の名前。例外のサマリー 例外 説明 AuthenticationFailedException この例外は、認証の失敗(ユーザー名やパスワードの誤りなど)が原因で Store または Transport オブジェクトの接続メソッドが失敗した場合にスローされます。FolderClosedException この例外は、メッセージオブジェクトでメソッドが呼び出され、そのオブジェクトを所有するフォルダーが何らかの理由で停止した場合にスローされます。FolderNotFoundException この例外は、Folder メソッドが存在しないフォルダーで呼び出された場合にスローされます。IllegalWriteException 任意のメッセージングオブジェクトの読み取り専用属性で書き込みが試行されたときにスローされる例外。MessageRemovedException 消去されたメッセージに対して無効なメソッドが呼び出されたときにスローされる例外。MessagingException メッセージングクラスによってスローされたすべての例外の基本クラスMethodNotSupportedException メソッドが実装でサポートされていない場合にスローされる例外NoSuchProviderException この例外は、Session が存在しないプロバイダーをインスタンス化しようとしたときにスローされます。ReadOnlyFolderException この例外は、フォルダーが読み取り専用としてマークされているときにフォルダーの読み取り / 書き込みアクセスを開こうとするとスローされます。SendFailedException この例外は、メッセージを送信できない場合にスローされます。StoreClosedException この例外は、メッセージオブジェクトでメソッドが呼び出され、そのオブジェクトを所有するストアが何らかの理由で停止した場合にスローされます。アノテーション型のサマリー アノテーション型 説明 MailSessionDefinition JNDI に登録されるMailSession
を定義するために Jakarta EE アプリケーションによって使用されるアノテーション。MailSessionDefinitions 1 つ以上のMailSessionDefinition
アノテーションを宣言します。