序文
一般的なOpen APIが電話をかけると、実行が成功しているかどうかを伝えるための返品値またはステータスコードがあることを誰もが知っておくべきだと思います。ただし、Javamailはそのような返品値を提供しません。
したがって、Javamailに電話してメールを送信する場合、Catch Exceptionを使用して電子メールが正常に送信されるかどうかを判断することのみができます。例外が発生しない限り、電子メールは正常に送信されると考えています。次に、Javamailが返品値を提供しない理由と、電子メールの送信ステータスの成功が例外を通じて信頼できるかどうかを分析しましょう。
Javamailは郵便の原則を送信します
Javamailを使用してメールを送信するときは、メールセッションを提供する必要があります。メールセッションを作成するプロセスは次のとおりです。
Properties Props = new Properties(); // mail props.putを送信するサーバーのIPとポート( "mail.smtp.host"、mail_smtp_host); props.put( "mail.smtp.port"、mail_smtp_port); //認証が必要かどうかはprops.put( "mail.smtp.auth"、 "true"); props.put( "mail.smtp.socketfactory.class"、 "javax.net.ssl.sslsocketfactory");セッションセッション= session.getDefaultInstance(props、new Authenticator(){protected passwordAuthentication getPassWordAuthentication(){//ユーザー名とパスワードにログインして、サーバーを送信しますnew PassiduteRuthentication(mail_sender_mail、mail_sender_pass);}});コードを分析します。
セッションを作成する前に、最初にプロパティを作成します。このプロパティは、次のパラメーターを設定します: mail.smtp.host 、 mail.smtp.port 、 mail.smtp.auth and mail.smtp.socketFactory.class 。セッションを作成するときは、電子メールを送信するためにユーザー名とパスワードを渡す必要があります。
送信メールコードは次のとおりです。
// Javamailを使用して電子メールを送信する5つのステップ// 1。セッションセッションセッション= session.getInstance(prop); //セッションデバッグモードを有効にするため、プログラムsession.setDebug(true)で送信された電子メールの実行ステータスを表示できます。 // 2。セッション輸送を介してトランスポートオブジェクトを取得しますts = session.getTransport(); // 3。メールサーバーに接続するには、電子メールのユーザー名とパスワードを使用します。電子メールを送信するとき、送信者は電子メールのユーザー名とパスワードをSMTPサーバーに送信する必要があります。電子メールを受信者に通常送信する前に、ユーザー名とパスワードを確認できます。 ts.Connect( "smtp.sohu.com"、 "gacl"、 "電子メールパスワード"); // 4。メッセージメッセージを作成するメッセージ= createSimplemail(session); // 5。メールTs.sendmessage(message、message.getallRecipients())を送信します。 //接続を閉じますts.close();
電子メールを送信するプロセスの要約には、次の手順があります。
1.メールサーバーへのネットワークリンクを含むセッションオブジェクトを作成する
2。電子メールのコンテンツを表すメッセージオブジェクトを作成します
3.トランスポートオブジェクトを作成します
4.サーバーへのリンク
5。メッセージを送信します
6.リンクを閉じます
輸送は単なる抽象クラスであるため、メソッドts.sendMessage実際にはSMTPTransport実装クラスSMTPTransportのsendMessageメソッドです。
SMTPTransportのsendMessageメソッドは、SMTPプロトコルに依存して電子メールを送信します。
したがって、JavamailがSMTPサービスを使用して電子メールを送信する場合、SMTPサーバーにメールを送信するとき、SMTPキューに送信されたステータスのみを取得できますが、メールサーバーが正常に送信できるかどうかを取得できません。つまり、メールが正常に送信されることを保証することはできません。これは、SMTPプロトコルのコンテンツ送信に依存します。
ただし、SMTPプロトコルが失敗した場合、エラーが報告されます。 TCPが提供するSMTPの信頼できるデータ送信サービスは、送信者のメールサーバーから受信者のメールサーバーにメールメッセージを送信します。
したがって、Javamailに電話してメールを送信すると、プログラムがエラーを報告しない場合、電子メールが正常に送信されることを意味すると考えることができます。
SMTP作業メカニズム
SMTPには通常、SMTPの送信とSMTPの受信の2つの作業モードがあります。
特定の作業方法は次のとおりです。ユーザーの電子メールリクエストを受信した後、電子メールがローカルメールであるかどうかを判断します。それ以外の場合は、ユーザーのメールに直接送信される場合は、DNSからリモートメールサーバーのMXレコードをクエリし、リモートがSMTPを受信して双方向伝送チャネルを確立します。その後、SMTPコマンドは送信SMTPによって送信され、受信SMTPによって受信され、応答は反対方向に送信されます。送信チャネルが確立されると、SMTP送信者はメールコマンドを送信して、メールの送信者を示します。 SMTPの受信者がメールを受信できる場合、OK回答が返されます。 SMTP送信者は、RCPTコマンドを発行して、電子メールが受信されたかどうかを確認します。 SMTPの受信者がそれを受け取った場合、それはOK答えを返します。受信できない場合、拒否応答を送信します(ただし、電子メール操作全体を中止しません)、両当事者はこれを何度も繰り返します。受信者がすべての電子メールを受信すると、特別なシーケンスが受信されます。受信者が電子メールを正常に処理すると、OK返信が返されます。
SMTP作業プロセス
Simple Mail Transfer Protocol(SMTP)は、メールサーバー間でメールを交換するためにインターネット上で使用されるテキストベースの電子メール伝送プロトコルです。 SMTPは、さまざまなネットワークシステムに適合できるアプリケーションレベルのサービスです。
SMTPのコマンドと応答はすべてテキストに基づいており、コマンドの動作単位があり、NewlineはCR/LFです。応答情報には、通常、3桁のコードから始まる1つの行のみがあり、非常に短いテキストの説明を後で添付できます。
SMTPは、接続の確立、メールの配信、接続のリリースの3つの段階を実行する必要があります。具体的には:
(1)TCP接続を確立します。
(2)クライアントは、送信者自身のIDを識別するためにHELOコマンドをサーバーに送信し、クライアントはメールコマンドを送信します。
(3)サーバーはOKで応答し、受信する準備ができていることを示します。
(4)クライアントはRCPTコマンドを送信します。
(5)サーバー側は、受信者に電子メールを受け取る意思があるかどうかを示します。
(6)交渉の終わり、電子メールの送信、およびコマンドデータを使用して入力コンテンツを送信します。
(7)QUITコマンドでこの送信と終了を終了します。
SMTPサーバーは、DNSのメールExchange(MX)に基づいて電子メールをルーティングします。電子メールを送信するとき、電子メールサーバーは受信者のアドレスの接尾辞に従って配置されます。 SMTPは、ユーザーエージェント(UA)を介して編集、収集、および読み取りの関数を完了します。メール転送エージェント(MTA)を介して宛先にメールを送信します。
要約します
上記は、この記事のコンテンツ全体です。この記事の内容があなたの研究や仕事に役立つことを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。