最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)發(fā)送郵件功能

 更新時(shí)間:2022年04月22日 10:16:16   作者:當(dāng)年的春天  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)發(fā)送郵件功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前言

前段時(shí)間做一個(gè)緊急的功能,其中有部分需求是需要發(fā)郵件通知;通過(guò)查閱以及實(shí)驗(yàn),很快的寫(xiě)了個(gè)發(fā)送郵件的功能;現(xiàn)在整理一下記錄下來(lái)。

發(fā)送郵件

一、在pom中引入相關(guān)依賴(lài)

 <dependency>
   <groupId>javax.mail</groupId>
   <artifactId>javax.mail-api</artifactId>
   <version>1.5.6</version>
</dependency>
 
<dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-email</artifactId>
   <version>1.4</version>
</dependency>

二、發(fā)送郵件的工具類(lèi)

package com.zhanghan;
 
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
 
import java.util.ArrayList;
import java.util.List;
 
@Service
public class EmailServiceImpl implements EmailService {
  @Override
  public void sendMail(String address, String subject, String htmlMsg, Boolean isSSL) throws EmailException {
 
    if (StringUtils.isEmpty(address) || StringUtils.isEmpty(subject) || StringUtils.isEmpty(htmlMsg)) {
      throw new EmailException();
    }
 
    try {
      HtmlEmail email = new HtmlEmail();
      List<String> list = new ArrayList<String>();
      list.add(address);
      String[] tos = list.toArray(new String[list.size()]);
 
      // 這里是SMTP發(fā)送服務(wù)器的名字:163的如下:"smtp.163.com"
      email.setHostName("smtp.exmail.qq.com");
      if (isSSL) {
        email.setSSLOnConnect(true);
        email.setSmtpPort(465);
      }
      // 字符編碼集的設(shè)置
      email.setCharset("UTF-8");
      // 收件人的郵箱
      email.addTo(tos);
      // 發(fā)送人的郵箱以及發(fā)件人名稱(chēng)
      email.setFrom("XXX@163.com", "zhanghan");
      // 如果需要認(rèn)證信息的話(huà),設(shè)置認(rèn)證:用戶(hù)名-密碼。分別為發(fā)件人在郵件服務(wù)器上的注冊(cè)名稱(chēng)和密碼
      email.setAuthentication("XXX@163.com", "yyyy");
      // 要發(fā)送的郵件主題
      email.setSubject(subject);
      // 要發(fā)送的信息,由于使用了HtmlEmail,可以在郵件內(nèi)容中使用HTML標(biāo)簽
      email.setHtmlMsg(htmlMsg);
 
      String result1 = email.send();      
 
    } catch (Exception e) {
      e.printStackTrace();
      throw new EmailException();
    }
  }
}

三、遇到的坑

在本地測(cè)試沒(méi)有問(wèn)題;我們的測(cè)試服務(wù)在阿里云上,阿里云對(duì)發(fā)送的時(shí)候是失??;追蹤日志發(fā)現(xiàn)原來(lái)是阿里云將發(fā)送郵件的默認(rèn)端口25關(guān)閉;需要將端口改成465。

總結(jié)

1、遇到問(wèn)題要多看日志,追蹤問(wèn)題;

2、不斷積累,不斷完善自己知識(shí)體系。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 劍指Offer之Java算法習(xí)題精講二叉搜索樹(shù)與數(shù)組查找

    劍指Offer之Java算法習(xí)題精講二叉搜索樹(shù)與數(shù)組查找

    跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過(guò)之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • Java scala模式匹配機(jī)制詳解

    Java scala模式匹配機(jī)制詳解

    模式匹配語(yǔ)法中,采用match關(guān)鍵字聲明,每個(gè)分支采用case關(guān)鍵字進(jìn)行聲明,當(dāng)需要匹配時(shí),會(huì)從第一個(gè)case分支開(kāi)始,如果匹配成功,那么執(zhí)行對(duì)應(yīng)的邏輯代碼,如果匹配不成功,繼續(xù)執(zhí)行下一個(gè)分支進(jìn)行判斷
    2023-02-02
  • Java設(shè)計(jì)模式之策略模式詳解和示例

    Java設(shè)計(jì)模式之策略模式詳解和示例

    這篇文章主要介紹了Java設(shè)計(jì)模式之策略模式詳解和示例,策略模式就是一種行為可能會(huì)因?yàn)椴煌倪壿嬙斐啥鄠€(gè)算法,比如人吃飯,美國(guó)人吃飯用刀叉,中國(guó)吃飯用筷子,都是吃飯的行為但是使用的工具(算法)不一樣,需要的朋友可以參考下
    2024-01-01
  • 關(guān)于Hibernate的一些學(xué)習(xí)心得總結(jié)

    關(guān)于Hibernate的一些學(xué)習(xí)心得總結(jié)

    Hibernate是一個(gè)優(yōu)秀的Java 持久化層解決方案,是當(dāng)今主流的對(duì)象—關(guān)系映射(ORM)工具
    2013-07-07
  • 淺談java常用的幾種線(xiàn)程池比較

    淺談java常用的幾種線(xiàn)程池比較

    下面小編就為大家?guī)?lái)一篇淺談java常用的幾種線(xiàn)程池比較。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • Jackson序列化丟失泛型的解決

    Jackson序列化丟失泛型的解決

    這篇文章主要介紹了Jackson序列化丟失泛型的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中的FileInputStream是否需要close問(wèn)題

    Java中的FileInputStream是否需要close問(wèn)題

    這篇文章主要介紹了Java中的FileInputStream是否需要close問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Java有序鏈表的合并實(shí)現(xiàn)方法

    Java有序鏈表的合并實(shí)現(xiàn)方法

    這篇文章主要通過(guò)兩個(gè)例題為大家介紹一下Java合并兩個(gè)及以上有序鏈表的實(shí)現(xiàn)方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下
    2023-04-04
  • 詳解Spring不同數(shù)據(jù)庫(kù)異常如何抽象的

    詳解Spring不同數(shù)據(jù)庫(kù)異常如何抽象的

    根據(jù)spring-jdbc中的定義,所有的數(shù)據(jù)操作異常都會(huì)轉(zhuǎn)換為 DataAccessException,下面這篇文章主要給大家介紹了關(guān)于Spring不同數(shù)據(jù)庫(kù)異常如何抽象的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • Java之dao模式詳解及代碼示例

    Java之dao模式詳解及代碼示例

    這篇文章主要介紹了Java之dao模式詳解及代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11

最新評(píng)論

丹寨县| 溧阳市| 云南省| 汨罗市| 个旧市| 乐平市| 临夏市| 东至县| 竹山县| 舒兰市| 阿坝| 错那县| 襄城县| 鸡泽县| 忻城县| 香港| 广东省| 长武县| 通山县| 白沙| 广德县| 彭阳县| 河东区| 桓台县| 滨海县| 北宁市| 盘锦市| 东山县| 沛县| 三原县| 崇文区| 拜城县| 思南县| 栾川县| 阿拉善左旗| 高阳县| 大兴区| 哈密市| 廉江市| 大厂| 胶南市|