クラス Session
- java.lang.ObjectSE
-
- jakarta.mail.Session
public final class Session extends ObjectSE
Session クラスはメールセッションを表し、サブクラス化されていません。メール API で使用されるプロパティとデフォルトを収集します。単一のデフォルトセッションは、デスクトップ上の複数のアプリケーションで共有できます。非共有セッションも作成できます。Session クラスは、
Store
、Transport
、関連するクラスを実装するプロトコルプロバイダーへのアクセスを提供します。プロトコルプロバイダーは、次のファイルを使用して構成されます。javamail.providers
およびjavamail.default.providers
javamail.address.map
およびjavamail.default.address.map
各
javamail.
X リソースファイルは、次の順序で 3 つの方法を使用して検索されます。java.home/conf/javamail.
XMETA-INF/javamail.
XMETA-INF/javamail.default.
X
(ここでの java.home は "java.home" システムプロパティの値で、conf は、存在する場合は "conf" という名前のディレクトリ、存在しない場合は "lib" という名前のディレクトリです。"conf" ディレクトリは JDK 1.9 で導入されました)
最初の方法では、
java.home
プロパティが指す conf ディレクトリにリソースファイルを置くことで、ユーザーが独自のバージョンのリソースファイルを含めることができます。2 番目の方法では、Jakarta Mail API を使用するアプリケーションが独自のリソースファイルをアプリケーションまたは jar ファイルのMETA-INF
ディレクトリに含めることができます。javamail.default.
X デフォルトファイルは Jakarta Mailmail.jar
ファイルの一部であり、ユーザーが指定することはできません。ファイルの場所は、
ClassLoader
メソッドgetResource
の実装方法によって異なります。通常、getResource
メソッドは、リクエストされたファイルが見つかるまで CLASSPATH を検索して停止します。リソースファイル内のエントリの順序は重要です。複数のエントリが存在する場合、最初のエントリが後のエントリより優先されます。例: アプリケーションによって明示的に変更されるまで、最初に見つかった IMAP プロバイダーがデフォルトの IMAP 実装として設定されます。ユーザーまたはシステムが提供するリソースファイルは、Jakarta Mail API に含まれているデフォルトファイルをオーバーライドしません。これは、読み込まれたすべてのファイルのすべてのエントリが利用できることを意味します。
javamail.providers
およびjavamail.default.providers
これらのリソースファイルは、システムで利用可能なストアとトランスポートを指定し、アプリケーションが利用可能なストアとトランスポートの実装を「発見」できるようにします。プロトコルの実装は、1 行に 1 つずつリストされています。ファイル形式は、プロトコルの実装を説明する 4 つの属性を定義します。各属性は "=" -separated 名前と値のペアで、名前は小文字です。名前と値の各ペアはセミコロン(";")で区切られます。以下の名前が定義されています。
プロバイダーファイルの属性名 名前 説明 プロトコル プロトコルに割り当てられた名前。例: 輸送用の smtp
。型 有効なエントリは store
およびtransport
です。class このプロトコルを実装するクラス名。 ベンダー ベンダーを識別するオプションの文字列。 バージョン バージョンを識別するオプションの文字列。 META-INF/javamail.default.providers
ファイルの内容の例を次に示します。protocol=imap; type=store; class=com.sun.mail.imap.IMAPStore; vendor=Oracle; protocol=smtp; type=transport; class=com.sun.mail.smtp.SMTPTransport; vendor=Oracle;
現在の実装では、Java SE
ServiceLoader
SE メカニズムを使用したプロバイダーの設定もサポートしています。独自のプロバイダーを作成するときは、Provider
サブクラスを作成します。例:package com.example; import jakarta.mail.Provider; public class MyProvider extends Provider { public MyProvider() { super(Provider.Type.STORE, "myprot", MyStore.class.getName(), "Example", null); } }
次に、jar ファイルにMETA-INF/services/jakarta.mail.Provider
という名前のファイルを含めます。このファイルには、プロバイダークラスの名前がリストされています。com.example.MyProvider
javamail.address.map
およびjavamail.default.address.map
これらのリソースファイルは、トランスポートアドレス型をトランスポートプロトコルにマップします。
jakarta.mail.Address
のgetType
メソッドはアドレス型を返します。javamail.address.map
ファイルは、トランスポート型をプロトコルにマップします。ファイル形式は、一連の名前と値のペアです。各キー名は、現在システムにインストールされているアドレス型に対応している必要があります。また、jakarta.mail.Address
を使用する場合は、jakarta.mail.Address
実装ごとにエントリが存在する必要があります。例:jakarta.mail.internet.InternetAddress
メソッドgetType
は "rfc822" を返します。参照されている各プロトコルをシステムにインストールする必要があります。以下のnews
の場合、クライアントは nntp プロトコルをサポートするトランスポートプロバイダーをインストールする必要があります。javamail.address.map
ファイルの一般的な内容は次のとおりです。rfc822=smtp news=nntp
- 作成者:
- John Mani, Bill Shannon, Max Spivak
メソッドのサマリー
すべてのメソッド 静的メソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 void
addProvider(Provider provider)
プロバイダーをセッションに追加します。boolean
getDebug()
このセッションのデバッグ設定を取得します。PrintStreamSE
getDebugOut()
デバッグ出力に使用されるストリームを返します。static Session
getDefaultInstance(PropertiesSE props)
デフォルトの Session オブジェクトを取得します。static Session
getDefaultInstance(PropertiesSE props, Authenticator authenticator)
デフォルトの Session オブジェクトを取得します。Folder
getFolder(URLName url)
指定された URLName の閉じた Folder オブジェクトを取得します。static Session
getInstance(PropertiesSE props)
新しい Session オブジェクトを取得します。static Session
getInstance(PropertiesSE props, Authenticator authenticator)
新しい Session オブジェクトを取得します。PasswordAuthentication
getPasswordAuthentication(URLName url)
この(ストアまたはトランスポート)URLName の保存済み PasswordAuthentication を返します。PropertiesSE
getProperties()
このセッションに関連付けられた Properties オブジェクトを返しますStringSE
getProperty(StringSE name)
指定されたプロパティの値を返します。Provider
getProvider(StringSE protocol)
指定されたプロトコルのデフォルトのプロバイダーを返します。Provider[]
getProviders()
このメソッドは、このアプリケーションで使用可能な ClassLoader を使用してロードできる javamail。[default。] providers ファイルを介してインストールされたすべての実装の配列を返します。Store
getStore()
このユーザーが希望する Store プロトコルを実装する Store オブジェクトを取得します。Store
getStore(Provider provider)
プロバイダーによって指定されたストアのインスタンスを取得します。Store
getStore(URLName url)
指定された URLName の Store オブジェクトを取得します。Store
getStore(StringSE protocol)
指定されたプロトコルを実装する Store オブジェクトを取得します。StreamProvider
getStreamProvider()
セッションのストリームプロバイダーインスタンスを取得します。Transport
getTransport()
このユーザーの希望するトランスポートプロトコルを実装するトランスポートオブジェクトを取得します。Transport
getTransport(Address address)
指定されたアドレス型のメッセージを転送できる Transport オブジェクトを取得します。Transport
getTransport(Provider provider)
プロバイダーで指定されたトランスポートのインスタンスを取得します。Transport
getTransport(URLName url)
指定された URLName の Transport オブジェクトを取得します。Transport
getTransport(StringSE protocol)
指定されたプロトコルを実装する Transport オブジェクトを取得します。PasswordAuthentication
requestPasswordAuthentication(InetAddressSE addr, int port, StringSE protocol, StringSE prompt, StringSE defaultUserName)
アプリケーションにコールバックして、必要なユーザー名とパスワードを取得します。void
setDebug(boolean debug)
このセッションのデバッグ設定を設定します。void
setDebugOut(PrintStreamSE out)
このセッションのデバッグ出力に使用するストリームを設定します。void
setPasswordAuthentication(URLName url, PasswordAuthentication pw)
この(ストアまたはトランスポート)URLName の PasswordAuthentication を保存します。void
setProtocolForAddress(StringSE addresstype, StringSE protocol)
指定された型のアドレスに使用するデフォルトのトランスポートプロトコルを設定します。void
setProvider(Provider provider)
渡されたプロバイダーを Provider.protocol のプロトコルのデフォルト実装に設定し、以前の値を上書きします。
メソッドの詳細
getStreamProvider
public StreamProvider getStreamProvider()
セッションのストリームプロバイダーインスタンスを取得します。- 戻り値:
- ストリームプロバイダー
- 導入:
- JavaMail 2.1
getInstance
public static Session getInstance(PropertiesSE props, Authenticator authenticator)
新しい Session オブジェクトを取得します。- パラメーター:
props
- 関連するプロパティを保持するプロパティオブジェクト。
デフォルトでは、Jakarta Mail 仕様の付録 A にリストされているプロパティ(特に mail.store.protocol、mail.transport.protocol、mail.host、mail.user、mail.from)の値がクライアントから提供されることが期待されています。すべてのケースで機能する可能性は低いです。authenticator
- ユーザー名とパスワードが必要なときにアプリケーションにコールバックするために使用される認証システムオブジェクト。- 戻り値:
- 新しい Session オブジェクト
- 関連事項:
Authenticator
getInstance
public static Session getInstance(PropertiesSE props)
新しい Session オブジェクトを取得します。- パラメーター:
props
- 関連するプロパティを保持するプロパティオブジェクト。
デフォルトでは、Jakarta Mail 仕様の付録 A にリストされているプロパティ(特に mail.store.protocol、mail.transport.protocol、mail.host、mail.user、mail.from)の値がクライアントから提供されることが期待されています。すべてのケースで機能する可能性は低いです。- 戻り値:
- 新しい Session オブジェクト
- 導入:
- JavaMail 1.2
getDefaultInstance
public static Session getDefaultInstance(PropertiesSE props, Authenticator authenticator)
デフォルトの Session オブジェクトを取得します。デフォルトがまだ設定されていない場合、新しい Session オブジェクトが作成され、デフォルトとしてインストールされます。デフォルトのセッションは、同じ Java 仮想マシンで実行されるすべてのコードで利用できる可能性があり、セッションにはユーザー名やパスワードなどの機密情報が含まれている可能性があるため、デフォルトのセッションへのアクセスは制限されます。Authenticator オブジェクトは呼び出し側で作成する必要があり、アクセス権限を確認するために間接的に使用されます。セッションの作成時に渡された Authenticator オブジェクトは、デフォルトのセッションを取得するために後続のリクエストに渡された Authenticator オブジェクトと比較されます。両方のオブジェクトが同じ、または同じ ClassLoader からのものである場合、リクエストは許可されます。それ以外の場合は拒否されます。
セッションの作成に使用される Authenticator オブジェクトが null の場合、null を渡すことで誰でもデフォルトセッションを取得できることに注意してください。
Properties オブジェクトは、このメソッドが初めて呼び出されたときにのみ、新しい Session オブジェクトが作成されたときに使用されることにも注意してください。以降の呼び出しでは、最初の呼び出しで作成された Session オブジェクトが返され、渡された Properties オブジェクトは無視されます。
getInstance
メソッドを使用して、メソッドが呼び出されるたびに新しい Session オブジェクトを取得します。追加のセキュリティ許可オブジェクトを使用して、デフォルトセッションへのアクセスを制御できます。
現在の実装では、SecurityManager が設定されている場合、呼び出し元には
RuntimePermission("setFactory")
権限が必要です。- パラメーター:
props
- プロパティオブジェクト。新しい Session オブジェクトが作成された場合にのみ使用されます。
デフォルトでは、Jakarta Mail 仕様の付録 A にリストされているプロパティ(特に mail.store.protocol、mail.transport.protocol、mail.host、mail.user、mail.from)の値がクライアントから提供されることが期待されています。すべてのケースで機能する可能性は低いです。authenticator
- Authenticator オブジェクト。新しい Session オブジェクトが作成された場合にのみ使用されます。それ以外の場合は、セッションの作成に使用されたオーセンティケーターと一致する必要があります。- 戻り値:
- デフォルトの Session オブジェクト
getDefaultInstance
public static Session getDefaultInstance(PropertiesSE props)
デフォルトの Session オブジェクトを取得します。デフォルトがまだ設定されていない場合、新しい Session オブジェクトが作成され、デフォルトとしてインストールされます。オーセンティケーターなしで作成されたデフォルトのセッションは、同じ Java 仮想マシンで実行されるすべてのコードで使用でき、セッションにはユーザー名やパスワードなどの機密情報を含めることができます。
- パラメーター:
props
- プロパティオブジェクト。新しい Session オブジェクトが作成された場合にのみ使用されます。
デフォルトでは、Jakarta Mail 仕様の付録 A にリストされているプロパティ(特に mail.store.protocol、mail.transport.protocol、mail.host、mail.user、mail.from)の値がクライアントから提供されることが期待されています。すべてのケースで機能する可能性は低いです。- 戻り値:
- デフォルトの Session オブジェクト
- 導入:
- JavaMail 1.2
setDebug
public void setDebug(boolean debug)
このセッションのデバッグ設定を設定します。デバッグ設定はセッションが作成された後にのみオンにすることができるため、セッションコンストラクターでデバッグをオンにするには、コンストラクターに渡される Properties オブジェクトのプロパティ
mail.debug
を true に設定します。mail.debug
プロパティの値は、セッションごとのデバッグフラグを初期化するために使用されます。その後のsetDebug
メソッドの呼び出しは、セッションごとのデバッグフラグを操作し、mail.debug
プロパティに影響を与えません。- パラメーター:
debug
- デバッグ設定
getDebug
public boolean getDebug()
このセッションのデバッグ設定を取得します。- 戻り値:
- 現在のデバッグ設定
setDebugOut
public void setDebugOut(PrintStreamSE out)
このセッションのデバッグ出力に使用するストリームを設定します。out
が null の場合、System.out
が使用されます。mail.debug
システムプロパティを設定した結果として、セッションが作成される前に発生するデバッグ出力は、常にSystem.out
に送信されることに注意してください。- パラメーター:
out
- デバッグ出力に使用する PrintStream- 導入:
- JavaMail 1.3
getDebugOut
public PrintStreamSE getDebugOut()
デバッグ出力に使用されるストリームを返します。ストリームが設定されていない場合は、System.out
が返されます。- 戻り値:
- デバッグ出力に使用する PrintStream
- 導入:
- JavaMail 1.3
getProviders
public Provider[] getProviders()
このメソッドは、このアプリケーションで使用可能な ClassLoader を使用してロードできる javamail。[default。] providers ファイルを介してインストールされたすべての実装の配列を返します。- 戻り値:
- 構成されたプロバイダーの配列
getProvider
public Provider getProvider(StringSE protocol) throws NoSuchProviderException
指定されたプロトコルのデフォルトのプロバイダーを返します。最初に mail。<protocol> .class プロパティをチェックし、存在する場合は、この実装に関連付けられているプロバイダーを返します。存在しない場合は、構成ファイルで最初に出現したプロバイダーを返します。プロトコルの実装が見つからない場合、NoSuchProviderException をスローします- パラメーター:
protocol
- 構成済みプロトコル (つまり、smtp、imap など)- 戻り値:
- 指定されたプロトコル用に現在構成されているプロバイダー
- 例外:
NoSuchProviderException
- 指定されたプロトコルのプロバイダーが見つからない場合。
setProvider
public void setProvider(Provider provider) throws NoSuchProviderException
渡されたプロバイダーを Provider.protocol のプロトコルのデフォルト実装に設定し、以前の値を上書きします。- パラメーター:
provider
- プロトコルのデフォルトとして設定される、現在構成されているプロバイダー- 例外:
NoSuchProviderException
- 渡されたプロバイダーが無効な場合。
getStore
public Store getStore() throws NoSuchProviderException
このユーザーが希望する Store プロトコルを実装する Store オブジェクトを取得します。mail.store.protocol
プロパティは、目的のプロトコルを指定します。適切な Store オブジェクトが取得されない場合、NoSuchProviderException がスローされます- 戻り値:
- Store オブジェクト
- 例外:
NoSuchProviderException
- 指定されたプロトコルのプロバイダーが見つからない場合。
getStore
public Store getStore(StringSE protocol) throws NoSuchProviderException
指定されたプロトコルを実装する Store オブジェクトを取得します。適切な Store オブジェクトを取得できない場合、NoSuchProviderException がスローされます。- パラメーター:
protocol
- ストアプロトコル- 戻り値:
- Store オブジェクト
- 例外:
NoSuchProviderException
- 指定されたプロトコルのプロバイダーが見つからない場合。
getStore
public Store getStore(URLName url) throws NoSuchProviderException
指定された URLName の Store オブジェクトを取得します。リクエストされた Store オブジェクトを取得できない場合、NoSuchProviderException がスローされます。URL 文字列(RFC 1738 を参照)の「スキーム」部分は、ストアプロトコルを見つけるために使用されます。- パラメーター:
url
- 目的のストアを表す URLName- 戻り値:
- 閉じた Store オブジェクト
- 例外:
NoSuchProviderException
- 指定された URLName のプロバイダーが見つからない場合。- 関連事項:
getFolder(URLName)
,URLName
getStore
public Store getStore(Provider provider) throws NoSuchProviderException
プロバイダーによって指定されたストアのインスタンスを取得します。ストアをインスタンス化して返します。- パラメーター:
provider
- インスタンス化されるストアプロバイダー- 戻り値:
- インスタンス化されたストア
- 例外:
NoSuchProviderException
- 指定されたプロバイダーのプロバイダーが見つからない場合。
getFolder
public Folder getFolder(URLName url) throws MessagingException
指定された URLName の閉じた Folder オブジェクトを取得します。リクエストされた Folder オブジェクトを取得できない場合、null が返されます。URL 文字列(RFC 1738 を参照)の「スキーム」部分は、ストアプロトコルを見つけるために使用されます。URL 文字列の残りの部分(つまり、RFC 1738 に基づく "schemepart" )は、適切な Folder オブジェクトを見つけてインスタンス化するために、プロトコルに依存した方法でそのストアによって使用されます。
RFC 1738 では、IP ベースのプロトコル(IMAP4、POP3 など)の "schemepart" の構文も指定されていることに注意してください。IP ベースのメールストアのプロバイダーは、フォルダーを参照するためにその構文を実装する必要があります。
- パラメーター:
url
- 目的のフォルダーを表す URLName- 戻り値:
- フォルダー
- 例外:
NoSuchProviderException
- 指定された URLName のプロバイダーが見つからない場合。MessagingException
- フォルダーが見つからなかったか、作成できなかった場合。- 関連事項:
getStore(URLName)
,URLName
getTransport
public Transport getTransport() throws NoSuchProviderException
このユーザーが希望するトランスポートプロトコルを実装するトランスポートオブジェクトを取得します。mail.transport.protocol
プロパティは、目的のプロトコルを指定します。適切な Transport オブジェクトを取得できない場合、MessagingException がスローされます。- 戻り値:
- Transport オブジェクト
- 例外:
NoSuchProviderException
- プロバイダーが見つからない場合。
getTransport
public Transport getTransport(StringSE protocol) throws NoSuchProviderException
指定されたプロトコルを実装する Transport オブジェクトを取得します。適切な Transport オブジェクトを取得できない場合は、null が返されます。- パラメーター:
protocol
- トランスポートプロトコル- 戻り値:
- Transport オブジェクト
- 例外:
NoSuchProviderException
- 指定されたプロトコルのプロバイダーが見つからない場合。
getTransport
public Transport getTransport(URLName url) throws NoSuchProviderException
指定された URLName の Transport オブジェクトを取得します。リクエストされたトランスポートオブジェクトを取得できない場合、NoSuchProviderException がスローされます。URL 文字列(RFC 1738 を参照)の「スキーム」部分は、トランスポートプロトコルを見つけるために使用されます。- パラメーター:
url
- 目的のトランスポートを表す URLName- 戻り値:
- 閉じた Transport オブジェクト
- 例外:
NoSuchProviderException
- 指定された URLName のプロバイダーが見つからない場合。- 関連事項:
URLName
getTransport
public Transport getTransport(Provider provider) throws NoSuchProviderException
プロバイダーで指定されたトランスポートのインスタンスを取得します。トランスポートをインスタンス化して返します。- パラメーター:
provider
- インスタンス化されるトランスポートプロバイダー- 戻り値:
- インスタンス化されたトランスポート
- 例外:
NoSuchProviderException
- 指定されたプロバイダーのプロバイダーが見つからない場合。
getTransport
public Transport getTransport(Address address) throws NoSuchProviderException
指定されたアドレス型のメッセージを転送できる Transport オブジェクトを取得します。- パラメーター:
address
- トランスポートが必要なアドレス- 戻り値:
- Transport オブジェクト
- 例外:
NoSuchProviderException
- アドレス型のプロバイダーが見つからない場合- 関連事項:
Address
setPasswordAuthentication
public void setPasswordAuthentication(URLName url, PasswordAuthentication pw)
この(ストアまたはトランスポート)URLName の PasswordAuthentication を保存します。pw が null の場合、URLName に対応するエントリは削除されます。これは通常、ストアまたはトランスポートの実装でのみ使用され、セッションの複数の使用間で認証情報を共有できるようにします。
- パラメーター:
url
- URLNamepw
- 保存する PasswordAuthentication
getPasswordAuthentication
public PasswordAuthentication getPasswordAuthentication(URLName url)
この(ストアまたはトランスポート)URLName の保存済み PasswordAuthentication を返します。通常、ストアまたはトランスポートの実装でのみ使用されます。- パラメーター:
url
- URLName- 戻り値:
- URLName に対応する PasswordAuthentication
requestPasswordAuthentication
public PasswordAuthentication requestPasswordAuthentication(InetAddressSE addr, int port, StringSE protocol, StringSE prompt, StringSE defaultUserName)
アプリケーションにコールバックして、必要なユーザー名とパスワードを取得します。アプリケーションは次のようなダイアログを表示する必要があります。Connecting to <protocol> mail service on host <addr>, port <port>. <prompt> User Name: <defaultUserName> Password:
- パラメーター:
addr
- ホストの InetAddress。null の可能性があります。port
- ホストのポートprotocol
- プロトコルスキーム (たとえば imap、pop3 など)prompt
- プロンプトの一部として表示する追加の文字列。null の可能性があります。defaultUserName
- デフォルトのユーザー名。null の可能性があります。- 戻り値:
- オーセンティケーターによって収集された認証。null の可能性があります。
getProperties
public PropertiesSE getProperties()
このセッションに関連付けられた Properties オブジェクトを返します- 戻り値:
- プロパティオブジェクト
getProperty
public StringSE getProperty(StringSE name)
指定されたプロパティの値を返します。このプロパティが存在しない場合は null を返します。- パラメーター:
name
- プロパティ名- 戻り値:
- プロパティ値である文字列
addProvider
public void addProvider(Provider provider)
プロバイダーをセッションに追加します。- パラメーター:
provider
- 追加するプロバイダー- 導入:
- JavaMail 1.4
setProtocolForAddress
public void setProtocolForAddress(StringSE addresstype, StringSE protocol)
指定された型のアドレスに使用するデフォルトのトランスポートプロトコルを設定します。通常、デフォルトはjavamail.default.address.map
またはjavamail.address.map
ファイルまたはリソースによって設定されます。- パラメーター:
addresstype
- 住所の型protocol
- プロトコルの名前- 導入:
- JavaMail 1.4
- 関連事項:
getTransport(Address)