public final class Session extends ObjectSE
Session クラスは、Store、Transport、関連するクラスを実装するプロトコルプロバイダーへのアクセスを提供します。プロトコルプロバイダーは、次のファイルを使用して構成されます。
javamail.providers および javamail.default.providersjavamail.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 Mail mail.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 ServiceLoaderSE メカニズムを使用したプロバイダーの設定もサポートしています。独自のプロバイダーを作成するときは、Provider サブクラスを作成します。例:
package com.example;
import javax.mail.Provider;
public class MyProvider extends Provider {
public MyProvider() {
super(Provider.Type.STORE, "myprot", MyStore.class.getName(),
"Example", null);
}
}
次に、jar ファイルに META-INF/services/javax.mail.Provider という名前のファイルを含めます。このファイルには、プロバイダークラスの名前がリストされています。com.example.MyProvider
javamail.address.map および javamail.default.address.map
これらのリソースファイルは、トランスポートアドレス型をトランスポートプロトコルにマップします。javax.mail.Address の getType メソッドはアドレス型を返します。javamail.address.map ファイルは、トランスポート型をプロトコルにマップします。ファイル形式は、一連の名前と値のペアです。各キー名は、現在システムにインストールされているアドレス型に対応している必要があります。また、javax.mail.Address を使用する場合は、javax.mail.Address 実装ごとにエントリが存在する必要があります。例: javax.mail.internet.InternetAddress メソッド getType は "rfc822" を返します。参照されている各プロトコルをシステムにインストールする必要があります。以下の news の場合、クライアントは nntp プロトコルをサポートするトランスポートプロバイダーをインストールする必要があります。
javamail.address.map ファイルの一般的な内容は次のとおりです。
rfc822=smtp news=nntp
| 修飾子と型 | メソッドと説明 |
|---|---|
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(StringSE protocol) 指定されたプロトコルを実装する Store オブジェクトを取得します。 |
Store | getStore(URLName url) 指定された URLName の Store オブジェクトを取得します。 |
Transport | getTransport() このユーザーの希望するトランスポートプロトコルを実装するトランスポートオブジェクトを取得します。 |
Transport | getTransport(Address address) 指定されたアドレス型のメッセージを転送できる Transport オブジェクトを取得します。 |
Transport | getTransport(Provider provider) プロバイダーで指定されたトランスポートのインスタンスを取得します。 |
Transport | getTransport(StringSE protocol) 指定されたプロトコルを実装する Transport オブジェクトを取得します。 |
Transport | getTransport(URLName url) 指定された URLName の 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 のプロトコルのデフォルト実装に設定し、以前の値を上書きします。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic static Session getInstance(PropertiesSE props, Authenticator authenticator)
props - 関連するプロパティを保持するプロパティオブジェクト。authenticator - ユーザー名とパスワードが必要なときにアプリケーションにコールバックするために使用される認証システムオブジェクト。Authenticatorpublic static Session getInstance(PropertiesSE props)
props - 関連するプロパティを保持するプロパティオブジェクト。public static Session getDefaultInstance(PropertiesSE props, Authenticator authenticator)
デフォルトのセッションは、同じ Java 仮想マシンで実行されるすべてのコードで利用できる可能性があり、セッションにはユーザー名やパスワードなどの機密情報が含まれている可能性があるため、デフォルトのセッションへのアクセスは制限されます。Authenticator オブジェクトは呼び出し側で作成する必要があり、アクセス権限を確認するために間接的に使用されます。セッションの作成時に渡された Authenticator オブジェクトは、デフォルトのセッションを取得するために後続のリクエストに渡された Authenticator オブジェクトと比較されます。両方のオブジェクトが同じ、または同じ ClassLoader からのものである場合、リクエストは許可されます。それ以外の場合は拒否されます。
セッションの作成に使用される Authenticator オブジェクトが null の場合、null を渡すことで誰でもデフォルトセッションを取得できることに注意してください。
Properties オブジェクトは、このメソッドが初めて呼び出されたときにのみ、新しい Session オブジェクトが作成されたときに使用されることにも注意してください。以降の呼び出しでは、最初の呼び出しで作成された Session オブジェクトが返され、渡された Properties オブジェクトは無視されます。getInstance メソッドを使用して、メソッドが呼び出されるたびに新しい Session オブジェクトを取得します。
追加のセキュリティ許可オブジェクトを使用して、デフォルトセッションへのアクセスを制御できます。
現在の実装では、SecurityManager が設定されている場合、呼び出し元には RuntimePermission("setFactory") 権限が必要です。
props - プロパティオブジェクト。新しい Session オブジェクトが作成された場合にのみ使用されます。authenticator - Authenticator オブジェクト。新しい Session オブジェクトが作成された場合にのみ使用されます。それ以外の場合は、セッションの作成に使用されたオーセンティケーターと一致する必要があります。public static Session getDefaultInstance(PropertiesSE props)
オーセンティケーターなしで作成されたデフォルトのセッションは、同じ Java 仮想マシンで実行されるすべてのコードで使用でき、セッションにはユーザー名やパスワードなどの機密情報を含めることができます。
props - プロパティオブジェクト。新しい Session オブジェクトが作成された場合にのみ使用されます。public void setDebug(boolean debug)
デバッグ設定はセッションが作成された後にのみオンにすることができるため、セッションコンストラクターでデバッグをオンにするには、コンストラクターに渡される Properties オブジェクトのプロパティ mail.debug を true に設定します。mail.debug プロパティの値は、セッションごとのデバッグフラグを初期化するために使用されます。その後の setDebug メソッドの呼び出しは、セッションごとのデバッグフラグを操作し、mail.debug プロパティに影響を与えません。
debug - デバッグ設定 public boolean getDebug()
public void setDebugOut(PrintStreamSE out)
out が null の場合、System.out が使用されます。mail.debug システムプロパティを設定した結果として、セッションが作成される前に発生するデバッグ出力は、常に System.out に送信されることに注意してください。out - デバッグ出力に使用する PrintStreampublic PrintStreamSE getDebugOut()
System.out が返されます。public Provider[] getProviders()
public Provider getProvider(StringSE protocol) throws NoSuchProviderException
protocol - 構成済みプロトコル (つまり、smtp、imap など)NoSuchProviderException - 指定されたプロトコルのプロバイダーが見つからない場合。public void setProvider(Provider provider) throws NoSuchProviderException
provider - プロトコルのデフォルトとして設定される、現在構成されているプロバイダー NoSuchProviderException - 渡されたプロバイダーが無効な場合。public Store getStore() throws NoSuchProviderException
mail.store.protocol プロパティは、目的のプロトコルを指定します。適切な Store オブジェクトが取得されない場合、NoSuchProviderException がスローされます NoSuchProviderException - 指定されたプロトコルのプロバイダーが見つからない場合。public Store getStore(StringSE protocol) throws NoSuchProviderException
protocol - ストアプロトコル NoSuchProviderException - 指定されたプロトコルのプロバイダーが見つからない場合。public Store getStore(URLName url) throws NoSuchProviderException
url - 目的のストアを表す URLNameNoSuchProviderException - 指定された URLName のプロバイダーが見つからない場合。getFolder(URLName), URLNamepublic Store getStore(Provider provider) throws NoSuchProviderException
provider - インスタンス化されるストアプロバイダー NoSuchProviderException - 指定されたプロバイダーのプロバイダーが見つからない場合。public Folder getFolder(URLName url) throws MessagingException
URL 文字列(RFC 1738 を参照)の「スキーム」部分は、ストアプロトコルを見つけるために使用されます。URL 文字列の残りの部分(つまり、RFC 1738 に基づく "schemepart" )は、適切な Folder オブジェクトを見つけてインスタンス化するために、プロトコルに依存した方法でそのストアによって使用されます。
RFC 1738 では、IP ベースのプロトコル(IMAP4、POP3 など)の "schemepart" の構文も指定されていることに注意してください。IP ベースのメールストアのプロバイダーは、フォルダーを参照するためにその構文を実装する必要があります。
url - 目的のフォルダーを表す URLNameNoSuchProviderException - 指定された URLName のプロバイダーが見つからない場合。MessagingException - フォルダーが見つからなかったか、作成できなかった場合。getStore(URLName), URLNamepublic Transport getTransport() throws NoSuchProviderException
mail.transport.protocol プロパティは、目的のプロトコルを指定します。適切な Transport オブジェクトを取得できない場合、MessagingException がスローされます。NoSuchProviderException - プロバイダーが見つからない場合。public Transport getTransport(StringSE protocol) throws NoSuchProviderException
protocol - トランスポートプロトコル NoSuchProviderException - 指定されたプロトコルのプロバイダーが見つからない場合。public Transport getTransport(URLName url) throws NoSuchProviderException
url - 目的のトランスポートを表す URLNameNoSuchProviderException - 指定された URLName のプロバイダーが見つからない場合。URLNamepublic Transport getTransport(Provider provider) throws NoSuchProviderException
provider - インスタンス化されるトランスポートプロバイダー NoSuchProviderException - 指定されたプロバイダーのプロバイダーが見つからない場合。public Transport getTransport(Address address) throws NoSuchProviderException
address - トランスポートが必要なアドレス NoSuchProviderException - アドレス型のプロバイダーが見つからない場合 Addresspublic void setPasswordAuthentication(URLName url, PasswordAuthentication pw)
これは通常、ストアまたはトランスポートの実装でのみ使用され、セッションの複数の使用間で認証情報を共有できるようにします。
url - URLNamepw - 保存する PasswordAuthenticationpublic PasswordAuthentication getPasswordAuthentication(URLName url)
url - URLNamepublic 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 の可能性があります。public PropertiesSE getProperties()
public StringSE getProperty(StringSE name)
name - プロパティ名 public void addProvider(Provider provider)
provider - 追加するプロバイダー public void setProtocolForAddress(StringSE addresstype, StringSE protocol)
javamail.default.address.map または javamail.address.map ファイルまたはリソースによって設定されます。addresstype - 住所の型 protocol - プロトコルの名前 getTransport(Address)Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.