SpringBootでQQメール機能を送る実現コード


本文はvhrシリーズの第12編で、プロジェクトの住所はhttps://github.com/lenve/vhrです。
メールを送るのもありふれた問題です。コードは簡単ですが、多くの子供たちは過程をよく理解していないので、子供たちとこの話をするつもりです。
メールプロトコル
私たちはよくSMTP、POP 3、IMAPなどの様々なメールプロトコルを耳にしますが、これらのプロトコルはどのような役割を果たしていますか?まずこの問題について討論しましょう。
SMTPはTCP/IPベースのアプリケーション層プロトコルであり、江湖の位置はHTTPに似ています。SMTPサーバのデフォルトの傍受ポート番号は25です。ここを見て、SMTPプロトコルがTCP/IPベースのアプリケーション層プロトコルである以上、私もソケットを通してメールを送ることができるのではないかと思います。答えは肯定です。
生活の中でメールを送るには、次のような手順があります。
1.深センの王さんはまずメールを深センの郵便局に送ります。
2.深センの郵便局は上海の郵便局にメールを送ります。
3.上海の張さんは郵便局に来てメールを取ります。
これは縮小版の生活の中でメールを送る過程です。これらの3つのステップは、それぞれ私たちのメール送信プロセスに対応してもよく、[email protected]から[email protected]にメールが送信されると仮定する。
[email protected]は、まずメールをテンセントのメールサーバに送ります。
2.騰訊のメールサーバーは私達のメールを網易のメールサーバーに送ります。
[email protected]は網易のメールサーバーに登録してメールを見ます。
メール便は大体この過程です。この過程は複数の協議に関連しています。別々に見てみます。
SMTPプロトコルは全部Simple Mail Transfer Protocolと呼ばれ、簡単なメール転送プロトコルと訳され、SMTPサーバ間のメールクライアントソフトウェアとSMTPサーバ間の通信ルールを定義しています。つまり[email protected]ユーザが先にメールをテンセントのSMTPサーバに送る過程はSMTPプロトコルを使って、テンセントのSMTPサーバが網易のSMTPサーバにメールを送る過程も依然としてSMTPプロトコルを使っています。SMTPサーバはメールを受信するために用いられます。POP 3プロトコルはすべてPost Office Protocolと呼ばれ、郵便局プロトコルと訳されています。メールクライアントとPOP 3サーバとの間の通信ルールを定義していますが、このプロトコルはどの場面で使われますか?網易のSMTPサーバにメールが到着した後、[email protected]ユーザはサーバに登録してメールを確認する必要があります。このとき、このプロトコルは使用されます。メールサービスプロバイダは各ユーザに専用のメールストア空間を提供します。SMTPサーバはメールを受信した後、メールを該当ユーザのメールストア空間に保存します。メールサービスのPOP 3メールサーバーで完成する必要があります。最後に、IMAPプロトコルを聞いたことがある仲間もいるかもしれません。このプロトコルはPOP 3プロトコルに対する拡張であり、機能がより強く、作用が似ています。ここでは説明を省略します。
QQメールを送る準備作業
まず私たちはQQメールのページに登録して、上の設定ボタンをクリックします。
 
アカウントのタブをクリックします。
 
アカウントのタブでPOP 3/SMTPを開くオプションを見つけました。
 
クリックしてオープンし、関連機能をオンにします。オープンプロセスは携帯電話番号の検証が必要です。手順に従って操作すればいいです。詳細は説明しません。オープンに成功したら、認証コードを取得して、この番号を保存して、後で使用します。
そして、JavaxMailというjarカバンが必要です。パートナーは直接にMaven中央倉庫にダウンロードしに行きます。ここではもう詳しく説明しません。
送信
簡単なメール
簡単なテキストを送るだけなら、発送方法は比較的簡単です。全体のプロセスは次のように分けられます。
第一歩: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.ssl.SSLSocketFactory");
properties.setProperty("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(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("      ");//    
mimeMessage.setContent("Hello,        ", "text/html;charset=utf-8");//  
ステップ3:メール送信

Transport transport = session.getTransport();
transport.connect("smtp.qq.com", "[email protected]", "         ");
transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());//    ,         
transport.close();
複雑なメール
複雑なメールを送ります。第一歩と第三歩も同じです。第二段階だけメールを作成するのは面倒くさいです。その後、友達に一つの図面と添付ファイルを送るメールを見せます。複雑なメールを送るには、まず三つの概念を熟知しなければならない。
1.MimeMessage:クラスはMIMEタイプとヘッダを理解できる電子メールメッセージである。
2.MimeMultiiPad:このクラスは、メールの異なる部分の内容を追加、削除、取得する方法を定義しています。
3.MimeBodyPart:オブジェクトの内容の一部を表します。各MimeBodyPartには、2つの部分があると考えられている。MIMEタイプとこのタイプにマッチするコンテンツ。
完全なメール生成プロセスは、以下の通りである。

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("      ");//    
MimeMultipart mixed = new MimeMultipart("mixed");
mimeMessage.setContent(mixed);//       MIME           
MimeBodyPart attach1 = new MimeBodyPart();//    1
MimeBodyPart attach2 = new MimeBodyPart();//    2
MimeBodyPart content = new MimeBodyPart();//      
mixed.addBodyPart(attach1);//       MIME    
mixed.addBodyPart(attach2);//       MIME    
mixed.addBodyPart(content);//          
FileDataSource fds1 = new FileDataSource(new File("C:\\Users\\sang\\Desktop\\1.png"));//         
DataHandler dh1 = new DataHandler(fds1);//    
attach1.setDataHandler(dh1);//         
attach1.setFileName("1.png");//         
//            ,         
FileDataSource fds2 = new FileDataSource(new File("C:\\Users\\sang\\Desktop\\    .xlsx"));
DataHandler dh2 = new DataHandler(fds2);
attach2.setDataHandler(dh2);
attach2.setFileName(MimeUtility.encodeText("    .xlsx"));//      ,     ,    MimeUtility   encodeText      ,    
MimeMultipart bodyMimeMultipart = new MimeMultipart("related");//     MIME  
content.setContent(bodyMimeMultipart);// bodyMimeMultipart         
MimeBodyPart bodyPart = new MimeBodyPart();//   HTML  
bodyPart.setContent("<h1>Hello   ,        <img src='cid:2.png'/></h1>","text/html;charset=utf-8");
MimeBodyPart picPart = new MimeBodyPart();//       
DataHandler dataHandler = new DataHandler(new FileDataSource("C:\\Users\\sang\\Desktop\\2.png"));
picPart.setDataHandler(dataHandler);
picPart.setContentID("2.png");
//    HTML          bodyMimeMultipart 
bodyMimeMultipart.addBodyPart(bodyPart);
bodyMimeMultipart.addBodyPart(picPart);
mimeMessage.saveChanges();
OKです。Java MailがQQメールを送るのはこんなに簡単です。他のものは163、sinaなどです。書き方は似ています。ここでは詳しく説明しません。
締め括りをつける
以上は小编が绍介したSpringBootの中でQQメールの机能の実现コードを発送して、みんなに対して助けがあることを望んで、もしみんなはいかなる疑问があるならばメッセージを下さい、小编は直ちにみんなのに返答します。ここでも私たちのサイトを応援してくれてありがとうございます。