この記事は、VHRシリーズの12番目の記事で、プロジェクトアドレスhttps://github.com/lenve/vhr
電子メールの送信も一般的な問題です。コードは簡単ですが、多くの友人はプロセスをあまり理解していないので、彼らはまだこのトピックについてあなたに話すことを計画しています。
電子メール契約
SMTP、POP3、IMAPなどのさまざまな電子メールプロトコルをよく聴きます。では、これらのプロトコルの機能は何ですか?違いは何ですか?最初にこの問題について説明しましょう。
SMTPは、TCP/IPに基づくアプリケーション層プロトコルです。そのステータスはHTTPに多少似ています。 SMTPサーバーのデフォルトのポート番号は25です。これを見ると、友人はSMTPプロトコルはTCP/IPアプリケーションレイヤープロトコルに基づいているため、ソケットから電子メールを送信することもできますか?答えはイエスです。
人生では、次の手順を実行する必要があります。
1.深センのXiao Wangは、最初に深Shenzhenの郵便局にメールを配信しました
2。深センの郵便局は上海の郵便局に郵便物を配達します
3。上海のXiao Zhangが郵便局に来てメールを受け取りました
これは、人生におけるメール送信プロセスの縮小バージョンです。これらの3つのステップは、電子メール送信プロセスに個別に対応できます。メールが[email protected]から[email protected]に送信されているとします。
[email protected]最初にTencentのメールサーバーにメールを配信します
2。Tencentのメールサーバーは、Neteaseのメールサーバーにメールを配信します
[email protected] Neteaseの電子メールサーバーにログインしてメールを表示する
電子メール配信は、ほぼこのプロセスであり、複数のプロトコルが含まれます。別々に見てみましょう。
SMTPプロトコルのフルネームは、単純なメール転送プロトコルであり、これは単純なメール転送プロトコルとして翻訳されています。メールクライアントソフトウェアとSMTPサーバーとSMTPサーバーの間の通信ルールを定義します。言い換えれば、TencentのSMTPサーバーに電子メールを配信するプロセスは、最初にSMTPプロトコルを使用し、次にTencentのSMTPサーバーはNetEaseのSMTPサーバーに電子メールを配信し、SMTPプロトコルを使用しています。 POP3プロトコルのフルネームは郵便局プロトコルであり、郵便局プロトコルとして翻訳されています。メールクライアントとPOP3サーバーの間の通信ルールを定義します。では、このプロトコルはどのシナリオで使用されますか?メールがNeteaseのSMTPサーバーに到着すると、[email protected]ユーザーは、メールを表示するためにサーバーにログインする必要があります。現時点では、契約が使用されます。電子メールサービスプロバイダーは、各ユーザーに特別な電子メールストレージスペースを提供します。 SMTPサーバーが電子メールを受信した後、対応するユーザーの電子メールストレージスペースにメールを保存します。ユーザーが電子メールを読み取りたい場合は、電子メールサービスプロバイダーのPOP3電子メールサーバーを介して完了する必要があります。最後に、一部の友人は、より強い機能と同様の機能を備えたPOP3プロトコルの拡張であるIMAPプロトコルを聞いたことがあるかもしれません。ここでは繰り返しません。
QQメールを送信するための準備
まず、QQメールWebバージョンにログインし、上の[設定]ボタンをクリックする必要があります。
次に、[アカウント]タブをクリックします。
次のように、[アカウント]タブでPOP3/SMTPを有効にするオプションを見つけます。
クリックして、関連する機能を有効にします。アクティベーションプロセスには、携帯電話番号の確認が必要です。手順に従って、詳しく説明しないでください。正常に有効になったら、認証コードを取得し、番号を保存し、しばらく使用できます。
次に、Javaxmail Jarパッケージが必要です。友達はMaven Central Warehouseで直接ダウンロードできます。ここでは、次の詳細については行きません。
送信
簡単なメール
簡単なテキストのみを送信する場合、送信方法は比較的簡単になります。プロセス全体を次のように3つのステップに分割できます。
ステップ1:SMTPメールサーバーの基本環境を構築する
Properties Properties = new Properties(); Properties.setProperty( "Mail.Host"、 "smtp.qq.com"); properties.setProperty( "mail.transport.protocol"、 "smtp"); properties.setProperty( "mail.smtp.auth"、 "true"); properties.setProperty( "mail.smtp.socketfactory.class"、 "javax.net.sslsocketfactory"); properties.setProperty( "mail.smtp.port"、 "465")、session session = session.getdefaultancans(properties); session.setDebug(true);
ステップ2:メールを作成します
mimemessage mimemessage = new mimemessage(session); mimemessage.addrecipients(message.recipienttype.to、 "[email protected]"); //受信者mimemessage.addrecipients(message.recipienttype.cc、 "[email protected]"); mimemessage.setfrom( "[email protected]"); //電子メール送信者mimemessage.setsubject( "Test Email Subject"); //メールトピックmimemessage.setContent( "Hello、これはテストメールです"、 "text/html; charset = utf-8");
ステップ3:メールを送信します
Transport Transport = session.getTransport(); Transport.Connect( "smtp.qq.com"、 "[email protected]"、 "適用された承認コード"); Transport.sendmessage(mimemessage.getallreciperts();
複雑な電子メール
複雑な電子メールを送信する場合、最初と3番目の手順は同じです。 2番目のステップのみが、電子メールの作成においてより面倒です。次に、写真とテキスト + 2つの添付ファイルを送信するメールをあなたに示します。複雑な電子メールを送信するには、最初に次のように3つの概念に精通している必要があります。
1.模倣:このクラスは、MIMEタイプとヘッダーを理解できるメールメッセージです。
2.mimemultipart:このクラスは、電子メールのさまざまな部分を追加、削除、取得する方法を定義しています
3.MimeBodyPart:このオブジェクトは、Mimemessageオブジェクトの内容の一部を表します。各mimebodypartには、このタイプに一致するmimeタイプとコンテンツの2つの部分があると考えられています
完全な電子メール生成プロセスは次のとおりです(最初と3番目の手順については上記を参照):
mimemessage mimemessage = new mimemessage(session); mimemessage.addrecipients(message.recipienttype.to、 "[email protected]"); //受信者mimemessage.addrecipients(message.recipienttype.cc、 "[email protected]"); mimemessage.setfrom( "[email protected]"); //電子メール送信者mimemessage.setsubject( "test email topic"); //メールトピックmimemultipart mixed = new mimemultipart( "mixed"); mimemessage.setcontent(Mixed); mimeBodyPart(); //添付資料1mimeBodyPart2 = new MimeBodyPart(); //添付資料2mimeBodyPartコンテンツを作成= new MimeBodyPart(); // Mixed.AddBodyPart(Adtid1); //添付ファイル1をmimeメッセージボディに加算します。 MixedDdodyPart(content); //ボディをメッセージボディに追加するfiledatasource fds1 = new filedatasource(new File( "c://users//sang//desktop//1.png"); attach1.setDatahandler(dh1); //添付ファイルのデータソース1添付1.setfileName( "1.png"); //添付ファイルのファイル名1を設定します。 filedatasource fds2 = new filedatasource(new file( "c:// users // sang // desktop // blog note.xlsx")); datahandler dh2 = new Datahandler(fds2); Attach2.setdatahandler(dh2); Attach2.setfileName(bob.Encodetextexet. note.xlsx "); //ファイル名を設定するとき、中国語がある場合、mimeutilityクラスのencodeTextメソッドを介してそれをエンコードして、mimemultipart bodymimemultipart = new mimemultipart("関連 "); MimeBodyPart BodyPart = new MimeBodyPart(); // html BodyPart.setContent( "<h1>こんにちはみんな、これはテストメールです<img src = 'cid:2.png' // </h1>"、 "text/html; charset = utf-8" BodyDatahandler DataHandler = new DataHandler(new FileDataSource( "c://sans//sang//desktop//2.png")); picpart.setdatahandler(Datahandler); picpart.setcontentid( "2.png"); // htmlと画像部分をボディmimemultipart.addbodypart(bodypart); bodymimemultipart.addbodypart(picpart); mimemessage.savechanges();
OK、JavaメールでQQメールを送信するのは簡単です。 163、Sinaなどの他のことについては、執筆スタイルも似ています。ここでは詳しく説明しません。
要約します
上記は、エディターが紹介したスプリングブートのQQメール関数の実装コードです。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!