JavaMailAPI-POP3サーバー
ポストオフィスプロトコル(POP)は、ローカル電子メールクライアントがTCP / IP接続を介してリモートサーバーから電子メールを取得するために使用するアプリケーション層のインターネット標準プロトコルです。POPは、リモートメールボックスにアクセスするための単純なダウンロードと削除の要件をサポートしています。POP3サーバーは既知のポート110でリッスンします。
パッケージ com.sun.mail.pop3は、POP3メッセージストアへのアクセスを提供するJavaMailAPIのPOP3プロトコルプロバイダーです。次の表に、このパッケージのクラスを示します。
名前 | 説明 |
---|---|
POP3Folder | POP3フォルダ(「INBOX」のみ)。 |
POP3Message | POP3メッセージ。 |
POP3SSLStore | SSLを使用したPOP3メッセージストア。 |
POP3Store | POP3メッセージストア。 |
このプロバイダーの上で注意すべきいくつかのポイント:
POP3プロバイダーは、という名前の単一のフォルダーのみをサポートします INBOX。POP3プロトコルの制限により、イベント通知、フォルダー管理、フラグ管理などのJavaMailAPI機能の多くは許可されていません。
POP3プロバイダーには、プロトコル名pop3またはpop3:// user:password @ host:port / INBOX "の形式のURLを使用してJavaMailAPIを介してアクセスします。
POP3は永続的なフラグをサポートしていません。たとえば、Flags.Flag.RECENTフラグがPOP3メッセージに設定されることはありません。POP3メールボックス内のどのメッセージが新しいかを判断するのはアプリケーション次第です。
POP3はFolder.expunge()メソッドをサポートしていません。メッセージを削除および消去するには、メッセージにFlags.Flag.DELETEDフラグを設定し、Folder.close(true)メソッドを使用してフォルダーを閉じます。
POP3は受信日を提供しないため、getReceivedDateメソッドはnullを返します。
POP3メッセージのヘッダーにアクセスすると、POP3プロバイダーはTOPコマンドを使用してすべてのヘッダーをフェッチし、それらをキャッシュします。
POP3メッセージのコンテンツにアクセスすると、POP3プロバイダーはRETRコマンドを使用してメッセージ全体をフェッチします。
POP3Message.invalidateの方法は、フォルダを閉じずにキャッシュされたデータを無効化するために使用することができます。
POP3プロトコルプロバイダーは、JavaMailSessionオブジェクトで設定できる次のプロパティをサポートしています。プロパティは常に文字列として設定されます。Type列は、文字列がどのように解釈されるかを示します。
名前 | タイプ | 説明 |
---|---|---|
mail.pop3.user | ストリング | POP3のデフォルトのユーザー名。 |
mail.pop3.host | ストリング | 接続するPOP3サーバー。 |
mail.pop3.port | int | connect()メソッドで明示的に指定されていない場合に接続するPOP3サーバーポート。デフォルトは110です。 |
mail.pop3.connectiontimeout | int | ミリ秒単位のソケット接続タイムアウト値。デフォルトは無限タイムアウトです。 |
mail.pop3.timeout | int | ミリ秒単位のソケットI / Oタイムアウト値。デフォルトは無限タイムアウトです。 |
mail.pop3.rsetbeforequit | ブール値 | フォルダを閉じるときに、QUITコマンドを送信する前に、POP3RSETコマンドを送信します。デフォルトはfalseです。 |
mail.pop3.message.class | ストリング | com.sun.mail.pop3.POP3Messageのサブクラスのクラス名。サブクラスは、(たとえば)非標準のContent-Typeヘッダーを処理するために使用できます。サブクラスには、MyPOP3Message(Folder f、int msgno)がMessagingExceptionをスローする形式のパブリックコンストラクターが必要です。 |
mail.pop3.localaddress | ストリング | POP3ソケットを作成するときにバインドするローカルアドレス(ホスト名)。デフォルトは、Socketクラスによって選択されたアドレスです。 |
mail.pop3.localport | int | POP3ソケットを作成するときにバインドするローカルポート番号。デフォルトは、Socketクラスによって選択されたポート番号です。 |
mail.pop3.apop.enable | ブール値 | trueに設定されている場合、POP3サーバーがAPOPをサポートしている場合は、USER / PASSの代わりにAPOPを使用してPOP3サーバーにログインします。APOPは、クリアテキストのパスワードではなく、パスワードのダイジェストを送信します。デフォルトはfalseです。 |
mail.pop3.socketFactory | ソケットファクトリー | javax.net.SocketFactoryインターフェースを実装するクラスに設定されている場合、このクラスはPOP3ソケットの作成に使用されます。 |
mail.pop3.socketFactory.class | ストリング | 設定されている場合、javax.net.SocketFactoryインターフェースを実装するクラスの名前を指定します。このクラスは、POP3ソケットを作成するために使用されます。 |
mail.pop3.socketFactory.fallback | ブール値 | trueに設定されている場合、指定されたソケットファクトリクラスを使用してソケットを作成できないと、java.net.Socketクラスを使用してソケットが作成されます。デフォルトはtrueです。 |
mail.pop3.socketFactory.port | int | 指定されたソケットファクトリを使用するときに接続するポートを指定します。設定されていない場合、デフォルトのポートが使用されます。 |
mail.pop3.ssl.enable | ブール値 | trueに設定されている場合、SSLを使用して接続し、デフォルトでSSLポートを使用します。デフォルトは「pop3」プロトコルの場合はfalse、「pop3s」プロトコルの場合はtrueです。 |
mail.pop3.ssl.checkserveridentity | ブール値 | trueに設定されている場合は、RFC2595で指定されているサーバーIDを確認してください。デフォルトはfalseです。 |
mail.pop3.ssl.trust | ストリング | 設定されていて、ソケットファクトリが指定されていない場合、MailSSLSocketFactoryの使用が有効になります。 「*」に設定すると、すべてのホストが信頼されます。 空白で区切られたホストのリストに設定されている場合、それらのホストは信頼されます。 それ以外の場合、信頼はサーバーが提示する証明書に依存します。 |
mail.pop3.ssl.socketFactory | SSLソケットファクトリ | javax.net.ssl.SSLSocketFactoryクラスを拡張するクラスに設定されている場合、このクラスはPOP3SSLソケットの作成に使用されます。 |
mail.pop3.ssl.socketFactory.class | ストリング | 設定されている場合、javax.net.ssl.SSLSocketFactoryクラスを拡張するクラスの名前を指定します。このクラスは、POP3SSLソケットを作成するために使用されます。 |
mail.pop3.ssl.socketFactory.port | int | 指定されたソケットファクトリを使用するときに接続するポートを指定します。設定されていない場合、デフォルトのポートが使用されます。 |
mail.pop3.ssl.protocols | ストリング | SSL接続で有効になるSSLプロトコルを指定します。プロパティ値は、javax.net.ssl.SSLSocket.setEnabledProtocolsメソッドで受け入れ可能なトークンの空白で区切られたリストです。 |
mail.pop3.starttls.enable | ブール値 | trueの場合、ログインコマンドを発行する前に、STLSコマンド(サーバーでサポートされている場合)を使用して、接続をTLSで保護された接続に切り替えることができます。デフォルトはfalseです。 |
mail.pop3.starttls.required | ブール値 | trueの場合、STLSコマンドを使用する必要があります。サーバーがSTLSコマンドをサポートしていない場合、またはコマンドが失敗した場合、connectメソッドは失敗します。デフォルトはfalseです。 |
mail.pop3.socks.host | ストリング | メールサーバーへの接続に使用されるSOCKS5プロキシサーバーのホスト名を指定します。 |
mail.pop3.socks.port | ストリング | SOCKS5プロキシサーバーのポート番号を指定します。 |
mail.pop3.disabletop | ブール値 | trueに設定すると、POP3TOPコマンドはメッセージヘッダーのフェッチには使用されません。デフォルトはfalseです。 |
mail.pop3.forgettopheaders | ブール値 | trueに設定すると、POP3 TOPコマンドを使用して取得された可能性のあるヘッダーは忘れられ、POP3RETRコマンドの一部として取得されたヘッダーに置き換えられます。デフォルトはfalseです。 |
mail.pop3.filecache.enable | ブール値 | trueに設定すると、POP3プロバイダーはメッセージデータをメモリではなく一時ファイルにキャッシュします。メッセージは、メッセージコンテンツにアクセスするときにのみキャッシュに追加されます。メッセージヘッダーは常にメモリにキャッシュされます(オンデマンド)。ファイルキャッシュは、フォルダーが閉じられるか、JVMが終了すると削除されます。デフォルトはfalseです。 |
mail.pop3.filecache.dir | ストリング | ファイルキャッシュが有効になっている場合、このプロパティを使用して、JDKが一時ファイルに使用するデフォルトのディレクトリを上書きできます。 |
mail.pop3.cachewriteto | ブール値 | POP3メッセージオブジェクトのwriteToメソッドの動作を制御します。trueに設定されていて、メッセージの内容がまだキャッシュされておらず、ignoreListがnullの場合、メッセージは書き込まれる前にキャッシュされます。それ以外の場合、メッセージはキャッシュされずに出力ストリームに直接ストリーミングされます。デフォルトはfalseです。 |
mail.pop3.keepmessagecontent | ブール値 | このプロパティがtrueに設定されている場合、キャッシュされたコンテンツへのハード参照が保持され、フォルダーが閉じられるか、キャッシュされたコンテンツが明示的に無効化されるまで(invalidateメソッドを使用)メモリが再利用されないようにします。デフォルトはfalseです。 |
一般に、アプリケーションはこのパッケージのクラスを直接使用しないでください。代わりに、javax.mailパッケージ(およびサブパッケージ)で定義されたAPIを使用する必要があります。アプリケーションは、POP3StoreまたはPOP3Folderのインスタンスを直接構築しないでください。代わりに、SessionメソッドgetStoreを使用して適切なStoreオブジェクトを取得し、そこからFolderオブジェクトを取得する必要があります。
POP3サーバーの使用例は、「電子メールのチェック」の章に示されています。