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

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

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

前言

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

問(wèn)題一,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

這個(gè)解決起來(lái)比較容易。找了些資料,添加如下配置即可:

mail.smtp.starttls.enable = true

問(wèn)題二,提示協(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)

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

依賴(lài)容器的jar重新寫(xiě)代碼;

更新容器的jar。

第二個(gè)選擇多少有些危險(xiǎn),就采用第一個(gè)選項(xiàng)好了,只需要修改一行即可:

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

這個(gè)問(wèn)題在javax.mail 1.4版本中會(huì)出現(xiàn)。之后較高的版本會(huì)默認(rè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)建郵件會(huì)話
   MimeMessage message = new MimeMessage(session);//由郵件會(huì)話新建一個(gè)消息對(duì)象

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

   //發(fā)送郵件
   Transport transport = session.getTransport("smtp");
   transport.connect(MAIL_SMTP_USER, MAIL_SMTP_PASSWORD);
   transport.sendMessage(message, message.getAllRecipients());//發(fā)送郵件,其中第二個(gè)參數(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)建郵件會(huì)話
   MimeMessage message = new MimeMessage(session);//由郵件會(huì)話新建一個(gè)消息對(duì)象
 
   message.setFrom(new InternetAddress(MAIL_SMTP_PASSWORD));//設(shè)置發(fā)件人的地址
   message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));//設(shè)置收件人,并設(shè)置其接收類(lèi)型為T(mén)O
   //設(shè)置信件內(nèi)容
   //message.setText(mailContent); //發(fā)送 純文本 郵件 TODO
   message.setSubject(title);//設(shè)置標(biāo)題
   message.setContent(content, "text/html;charset=gbk"); //發(fā)送HTML郵件,內(nèi)容樣式比較豐富
   message.setSentDate(new Date());//設(shè)置發(fā)信時(shí)間
   message.saveChanges();//存儲(chǔ)郵件信息
 
   //發(fā)送郵件
   Transport transport = session.getTransport("smtp");
   transport.connect(MAIL_SMTP_USER, MAIL_SMTP_PASSWORD);
   transport.sendMessage(message, message.getAllRecipients());//發(fā)送郵件,其中第二個(gè)參數(shù)是所有已設(shè)好的收件人地址
   transport.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 
}

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)工作能有所幫助。

相關(guān)文章

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

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

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

    在Java的MyBatis框架中建立接口進(jìn)行CRUD操作的方法

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

    JVM類(lèi)加載,垃圾回收

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

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

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

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

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

    SWT(JFace)體驗(yàn)之復(fù)制粘貼

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

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

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

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

    下面小編就為大家?guī)?lái)一篇java學(xué)習(xí)筆記_關(guān)于字符串概述。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • SpringCloud Hystrix的使用

    SpringCloud Hystrix的使用

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

    java打jar包與找不到依賴(lài)包的問(wèn)題

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

最新評(píng)論