欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

談?wù)勗贘ava發(fā)送郵件中遇到的的問題

 更新時間:2016年08月22日 09:33:02   投稿:daisy  
本文介紹了在利用Java發(fā)送郵件過程中遇到的的兩個問題,以及如何解決這兩個問題。如果大家也遇到了這些問題,可以來參考借鑒。

前言

發(fā)送郵件的代碼是我從以前的一個應(yīng)用上直接拷貝過來的。以前使用的騰訊的郵件服務(wù),程序執(zhí)行起來沒有任何問題。后來修改為微軟office365郵件服務(wù)后,卻遇到了兩個問題。

問題一,tls加密設(shè)置

異常信息如下:

Exception in thread "main" com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM

這個解決起來比較容易。找了些資料,添加如下配置即可:

mail.smtp.starttls.enable = true

問題二,提示協(xié)議為null:

異常信息如下:

Exception in thread "main" javax.mail.NoSuchProviderException: Invalid protocol: null
 at javax.mail.Session.getProvider(Session.java:449)
 at javax.mail.Session.getTransport(Session.java:667)
 at javax.mail.Session.getTransport(Session.java:648)
 at javax.mail.Session.getTransport(Session.java:634)

這個問題是在將應(yīng)用部署到生產(chǎn)環(huán)境后才遇到的。經(jīng)檢查后發(fā)現(xiàn)調(diào)用的jar包不是我在maven中指定的版本。后來確認是應(yīng)用使用的jar包和容器(就是jetty)使用的jar包沖突了。容器使用的jar版本較舊,不過默認優(yōu)先加載容器的jar。這樣問題解決思路有兩個:

依賴容器的jar重新寫代碼;

更新容器的jar。

第二個選擇多少有些危險,就采用第一個選項好了,只需要修改一行即可:

Transport transport = session.getTransport("smtp");

這個問題在javax.mail 1.4版本中會出現(xiàn)。之后較高的版本會默認采用SMTP協(xié)議發(fā)送郵件。

修改后的程序:

package com.zhyea.zytools;

import java.util.Date;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailSender {

 private static final String MAIL_SMTP_HOST = "smtp.exmail.qq.com";
 private static final Integer MAIL_SMTP_PORT = 587;
 private static final Boolean MAIL_SMTP_AUTH = true;
 private static final String MAIL_SMTP_USER = "robin@zhyea.com";
 private static final String MAIL_SMTP_PASSWORD = "robinzhyea";

 private static Properties props = new Properties();

 static {
  props.put("mail.smtp.host", MAIL_SMTP_HOST);
  props.put("mail.smtp.auth", MAIL_SMTP_AUTH);
  props.put("mail.smtp.user", MAIL_SMTP_USER);
  props.put("mail.smtp.password", MAIL_SMTP_PASSWORD);
  props.put("mail.smtp.starttls.enable", true);
 }


 /**
  * 發(fā)送郵件
  */
 public static void send(String to, String title, String content) {
  try {
   Session session = Session.getInstance(props);//創(chuàng)建郵件會話
   MimeMessage message = new MimeMessage(session);//由郵件會話新建一個消息對象

   message.setFrom(new InternetAddress(MAIL_SMTP_PASSWORD));//設(shè)置發(fā)件人的地址
   message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));//設(shè)置收件人,并設(shè)置其接收類型為TO
   //設(shè)置信件內(nèi)容
   //message.setText(mailContent); //發(fā)送 純文本 郵件 TODO
   message.setSubject(title);//設(shè)置標題
   message.setContent(content, "text/html;charset=gbk"); //發(fā)送HTML郵件,內(nèi)容樣式比較豐富
   message.setSentDate(new Date());//設(shè)置發(fā)信時間
   message.saveChanges();//存儲郵件信息

   //發(fā)送郵件
   Transport transport = session.getTransport("smtp");
   transport.connect(MAIL_SMTP_USER, MAIL_SMTP_PASSWORD);
   transport.sendMessage(message, message.getAllRecipients());//發(fā)送郵件,其中第二個參數(shù)是所有已設(shè)好的收件人地址
   transport.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 
}
package com.zhyea.zytools;
 
import java.util.Date;
import java.util.Properties;
 
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
 
public class MailSender {
 
 private static final String MAIL_SMTP_HOST = "smtp.exmail.qq.com";
 private static final Integer MAIL_SMTP_PORT = 587;
 private static final Boolean MAIL_SMTP_AUTH = true;
 private static final String MAIL_SMTP_USER = "robin@zhyea.com";
 private static final String MAIL_SMTP_PASSWORD = "robinzhyea";
 
 private static Properties props = new Properties();
 
 static {
  props.put("mail.smtp.host", MAIL_SMTP_HOST);
  props.put("mail.smtp.auth", MAIL_SMTP_AUTH);
  props.put("mail.smtp.user", MAIL_SMTP_USER);
  props.put("mail.smtp.password", MAIL_SMTP_PASSWORD);
  props.put("mail.smtp.starttls.enable", true);
 }
 
 
 /**
  * 發(fā)送郵件
  */
 public static void send(String to, String title, String content) {
  try {
   Session session = Session.getInstance(props);//創(chuàng)建郵件會話
   MimeMessage message = new MimeMessage(session);//由郵件會話新建一個消息對象
 
   message.setFrom(new InternetAddress(MAIL_SMTP_PASSWORD));//設(shè)置發(fā)件人的地址
   message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));//設(shè)置收件人,并設(shè)置其接收類型為TO
   //設(shè)置信件內(nèi)容
   //message.setText(mailContent); //發(fā)送 純文本 郵件 TODO
   message.setSubject(title);//設(shè)置標題
   message.setContent(content, "text/html;charset=gbk"); //發(fā)送HTML郵件,內(nèi)容樣式比較豐富
   message.setSentDate(new Date());//設(shè)置發(fā)信時間
   message.saveChanges();//存儲郵件信息
 
   //發(fā)送郵件
   Transport transport = session.getTransport("smtp");
   transport.connect(MAIL_SMTP_USER, MAIL_SMTP_PASSWORD);
   transport.sendMessage(message, message.getAllRecipients());//發(fā)送郵件,其中第二個參數(shù)是所有已設(shè)好的收件人地址
   transport.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 
}

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學習工作能有所幫助。

相關(guān)文章

  • Spring的Aware接口實現(xiàn)及執(zhí)行順序詳解

    Spring的Aware接口實現(xiàn)及執(zhí)行順序詳解

    這篇文章主要為大家介紹了Spring的Aware接口實現(xiàn)及執(zhí)行順序詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 在Java的MyBatis框架中建立接口進行CRUD操作的方法

    在Java的MyBatis框架中建立接口進行CRUD操作的方法

    這篇文章主要介紹了在Java的MyBatis框架中建立接口進行CRUD操作的方法,CRUD是指在做計算處理時的增加(Create)、重新取得數(shù)據(jù)(Retrieve)、更新(Update)和刪除(Delete)幾個單詞的首字母簡寫,需要的朋友可以參考下
    2016-04-04
  • JVM類加載,垃圾回收

    JVM類加載,垃圾回收

    這篇文章主要介紹了JVM的幾種垃圾回收器,文中通過示例代碼介紹的很詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-07-07
  • Springboot+Vue+axios實現(xiàn)文章收藏功能

    Springboot+Vue+axios實現(xiàn)文章收藏功能

    這篇文章主要為大家詳細介紹了Springboot+Vue+axios實現(xiàn)文章收藏功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • java讀取XML文件的四種方法總結(jié)(必看篇)

    java讀取XML文件的四種方法總結(jié)(必看篇)

    下面小編就為大家?guī)硪黄猨ava讀取XML文件的四種方法總結(jié)(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • SWT(JFace)體驗之復制粘貼

    SWT(JFace)體驗之復制粘貼

    SWT(JFace)體驗之復制粘貼
    2009-06-06
  • java實現(xiàn)猜拳游戲

    java實現(xiàn)猜拳游戲

    這篇文章主要為大家詳細介紹了java實現(xiàn)猜拳游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • java學習筆記_關(guān)于字符串概述

    java學習筆記_關(guān)于字符串概述

    下面小編就為大家?guī)硪黄猨ava學習筆記_關(guān)于字符串概述。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • SpringCloud Hystrix的使用

    SpringCloud Hystrix的使用

    這篇文章主要介紹了SpringCloud Hystrix的使用,幫助大家更好的理解和學習使用SpringCloud,感興趣的朋友可以了解下
    2021-04-04
  • java打jar包與找不到依賴包的問題

    java打jar包與找不到依賴包的問題

    這篇文章主要介紹了java打jar包與找不到依賴包的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論