国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

談談在Java發(fā)送郵件中遇到的的問題

2019-11-26 13:57:30
字體:
供稿:網(wǎng)友

前言

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

問題一,tls加密設置

異常信息如下:

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)

這個問題是在將應用部署到生產(chǎn)環(huán)境后才遇到的。經(jīng)檢查后發(fā)現(xiàn)調(diào)用的jar包不是我在maven中指定的版本。后來確認是應用使用的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));//設置發(fā)件人的地址   message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));//設置收件人,并設置其接收類型為TO   //設置信件內(nèi)容   //message.setText(mailContent); //發(fā)送 純文本 郵件 TODO   message.setSubject(title);//設置標題   message.setContent(content, "text/html;charset=gbk"); //發(fā)送HTML郵件,內(nèi)容樣式比較豐富   message.setSentDate(new Date());//設置發(fā)信時間   message.saveChanges();//存儲郵件信息   //發(fā)送郵件   Transport transport = session.getTransport("smtp");   transport.connect(MAIL_SMTP_USER, MAIL_SMTP_PASSWORD);   transport.sendMessage(message, message.getAllRecipients());//發(fā)送郵件,其中第二個參數(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));//設置發(fā)件人的地址   message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));//設置收件人,并設置其接收類型為TO   //設置信件內(nèi)容   //message.setText(mailContent); //發(fā)送 純文本 郵件 TODO   message.setSubject(title);//設置標題   message.setContent(content, "text/html;charset=gbk"); //發(fā)送HTML郵件,內(nèi)容樣式比較豐富   message.setSentDate(new Date());//設置發(fā)信時間   message.saveChanges();//存儲郵件信息    //發(fā)送郵件   Transport transport = session.getTransport("smtp");   transport.connect(MAIL_SMTP_USER, MAIL_SMTP_PASSWORD);   transport.sendMessage(message, message.getAllRecipients());//發(fā)送郵件,其中第二個參數(shù)是所有已設好的收件人地址   transport.close();  } catch (Exception e) {   e.printStackTrace();  } } }

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 襄垣县| 鄂伦春自治旗| 逊克县| 陆丰市| 丰台区| 江门市| 同心县| 营口市| 体育| 永川市| 西乌珠穆沁旗| 藁城市| 疏勒县| 博白县| 霍城县| 湖北省| 家居| 班玛县| 陵川县| 集贤县| 平昌县| 凤山县| 镇远县| 玉屏| 会宁县| 玛纳斯县| 富蕴县| 新巴尔虎左旗| 双牌县| 茂名市| 昌图县| 中超| 雷山县| 大同县| 洪雅县| 松江区| 霍邱县| 清远市| 库伦旗| 襄垣县| 汽车|