亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java實現(xiàn)郵件發(fā)送遇到的問題

 更新時間:2016年09月11日 15:36:53   投稿:hebedich  
本文給大家分享的是個人在項目過程中,使用Java實現(xiàn)郵件發(fā)送的時候所遇到的幾個問題以及解決方法,有需要的小伙伴可以參考下

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

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

異常信息如下:

復(fù)制代碼 代碼如下:

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中指定的版本。后來確認(rèn)是應(yīng)用使用的jar包和容器(就是jetty)使用的jar包沖突了。容器使用的jar版本較舊,不過默認(rèn)優(yōu)先加載容器的jar。這樣問題解決思路有兩個:

  1. 依賴容器的jar重新寫代碼;
  2. 更新容器的jar。

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

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

這個問題在javax.mail 1.4版本中會出現(xiàn)。之后較高的版本會默認(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)建郵件會話
      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è)置標(biāo)題
      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();
    }
  }
  
}

相關(guān)文章

  • 老生常談java中的fail-fast機(jī)制

    老生常談java中的fail-fast機(jī)制

    下面小編就為大家?guī)硪黄仙U刯ava中的fail-fast機(jī)制。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • java導(dǎo)出json格式文件的示例代碼

    java導(dǎo)出json格式文件的示例代碼

    本篇文章主要介紹了java導(dǎo)出json格式文件的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Java基礎(chǔ)之文件和目錄操作

    Java基礎(chǔ)之文件和目錄操作

    這篇文章主要介紹了Java基礎(chǔ)之文件和目錄操作,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • Java中泛型的示例詳解

    Java中泛型的示例詳解

    泛型機(jī)制在項目中一直都在使用,不僅如此,很多源碼中都用到了泛型機(jī)制。本文將通過一些示例帶大家深入了解一下Java的泛型機(jī)制,需要的可以了解一下
    2022-10-10
  • Java中FilterInputStream和FilterOutputStream的用法詳解

    Java中FilterInputStream和FilterOutputStream的用法詳解

    這篇文章主要介紹了Java中FilterInputStream和FilterOutputStream的用法詳解,這兩個類分別用于封裝輸入和輸出流,需要的朋友可以參考下
    2016-06-06
  • Java線程池7個參數(shù)的詳細(xì)含義

    Java線程池7個參數(shù)的詳細(xì)含義

    java多線程開發(fā)時,常常用到線程池技術(shù),這篇文章是對創(chuàng)建java線程池時的七個參數(shù)的詳細(xì)解釋,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 解決java web應(yīng)用線上系統(tǒng)偶發(fā)宕機(jī)的情況

    解決java web應(yīng)用線上系統(tǒng)偶發(fā)宕機(jī)的情況

    這篇文章主要介紹了解決java web應(yīng)用線上系統(tǒng)偶發(fā)宕機(jī)的情況,具有好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • springboot如何使用yml文件方式配置shardingsphere

    springboot如何使用yml文件方式配置shardingsphere

    這篇文章主要介紹了springboot如何使用yml文件方式配置shardingsphere問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java?List排序4種寫法整理

    Java?List排序4種寫法整理

    這篇文章主要給大家介紹了關(guān)于Java?List排序4種寫法整理的相關(guān)資料,在有的時候我們會需要對List進(jìn)行排序,在Java中如何實現(xiàn)呢,本文記錄一下Java中對List的幾種排序方式,需要的朋友可以參考下
    2023-08-08
  • Spring Data JPA+kkpager實現(xiàn)分頁功能實例

    Spring Data JPA+kkpager實現(xiàn)分頁功能實例

    本篇文章主要介紹了Spring Data JPA+kkpager實現(xiàn)分頁功能實例,具有一定的參考價值,有興趣的可以了解一下
    2017-06-06

最新評論