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

Java使用JavaMail API實現(xiàn)原生郵箱發(fā)送功能的方法

 更新時間:2026年02月26日 09:41:24   作者:長路??  
文章介紹了如何使用JavaMailAPI在Java后端實現(xiàn)原生郵箱發(fā)送功能,包括配置郵件服務(wù)器、獲取校驗碼以及解決SSL握手異常的問題,需要的朋友可以參考下

前言

涵蓋技術(shù)內(nèi)容:Java后端、大數(shù)據(jù)、算法、分布式微服務(wù)、中間件、前端、運維等。

原生集成郵箱實現(xiàn)

引入pom.xml

郵件發(fā)送借助javax.mail工具類

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

前提配置

1、163、新浪郵箱不需要 SSL 加密,QQ 郵箱需要 SSL 加密,在下面實現(xiàn)中開啟了SSL加密。

2、若是想要發(fā)送郵件得需要先登陸到對應(yīng)的郵件服務(wù)器,那么必不可少的就是校驗碼,如何獲取校驗碼如下:

設(shè)置-開啟,根據(jù)如下開啟指示開啟即可獲取校驗碼:

功能實現(xiàn)

package com.dtstack.knowledge.ai.server.util;

import com.sun.mail.util.MailSSLSocketFactory;

import javax.mail.*;
import javax.mail.Message;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

/**
 * @ClassName MailUtil
 * @Author ChangLu
 * @Date 2022/1/25 18:28
 * @Description TODO
 */
public class MailUtil {

    public static void main(String[] args) throws Exception {
        sendQQMail("939974883@qq.com", "changlu@dtstack.com", "sdfdsfdsdfds");
    }

    private static SimpleDateFormat DATE_FORMAT_TOOL = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    /**
     * 向指定qq發(fā)送郵件
     * @param FROM 發(fā)送者qq
     * @param to 接受者qq
     * @param code 發(fā)送者qq的授權(quán)碼(需要去qq郵箱進(jìn)行授權(quán))
     * @throws Exception
     */
    public static void sendQQMail(String FROM, String TO, String code) throws Exception {
        Properties props = new Properties();

        // 開啟debug調(diào)試
        props.setProperty("mail.debug", "true");
        // 發(fā)送服務(wù)器需要身份驗證
        props.setProperty("mail.smtp.auth", "true");
        // 設(shè)置郵件服務(wù)器主機(jī)名
        props.setProperty("mail.host", "smtp.qq.com");
        // 發(fā)送郵件協(xié)議名稱
        props.setProperty("mail.transport.protocol", "smtp");

        // 針對 JDK 17 的 SSL 協(xié)議配置
        props.setProperty("mail.smtp.ssl.protocols", "TLSv1.2");

        //開啟SSL加密
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        props.put("mail.smtp.ssl.enable", "true");
        props.put("mail.smtp.ssl.socketFactory", sf);

        Session session = Session.getInstance(props);

        //消息對象配置信息
        Message msg = new MimeMessage(session);
        //設(shè)置標(biāo)題名稱
        msg.setSubject("測試");
        StringBuilder builder = new StringBuilder();
        builder.append("\n " + "<h1>歡迎你加入智蜂工作室!</h1>");
        builder.append("\n時間 " + DATE_FORMAT_TOOL.format(new Date()));
        //設(shè)置短信內(nèi)容(setContent可以設(shè)置發(fā)送內(nèi)容的類型格式)
        msg.setContent(builder.toString(), "text/html;charset=UTF-8");
        msg.setFrom(new InternetAddress(FROM));//發(fā)送人的郵箱地址

        //進(jìn)行連接
        Transport transport = session.getTransport();
        transport.connect("smtp.qq.com", FROM, code);
        transport.sendMessage(msg, new Address[] { new InternetAddress(TO) });//接收人的郵箱地址
        transport.close();
    }


}

效果:

問題解決

報錯:javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

解決方式:

補充配置項參數(shù):

// 針對 JDK 17 的 SSL 協(xié)議配置
props.setProperty("mail.smtp.ssl.protocols", "TLSv1.2");

到此這篇關(guān)于Java使用JavaMail API實現(xiàn)原生郵箱發(fā)送功能的方法的文章就介紹到這了,更多相關(guān)JavaMail API原生郵箱發(fā)送內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis?多表聯(lián)合查詢及優(yōu)化方法

    MyBatis?多表聯(lián)合查詢及優(yōu)化方法

    大家都知道Hibernate 是全自動的數(shù)據(jù)庫持久層框架,它可以通過實體來映射數(shù)據(jù)庫,通過設(shè)置一對多、多對一、一對一、多對多的關(guān)聯(lián)來實現(xiàn)聯(lián)合查詢,接下來通過本文給大家介紹MyBatis?多表聯(lián)合查詢及優(yōu)化,需要的朋友可以參考下
    2022-08-08
  • SpringBoot獲取當(dāng)前運行環(huán)境三種方式小結(jié)

    SpringBoot獲取當(dāng)前運行環(huán)境三種方式小結(jié)

    在使用SpringBoot過程中,我們只需要引入相關(guān)依賴,然后在main方法中調(diào)用SpringBootApplication.run(應(yīng)用程序啟動類.class)方法即可,那么SpringBoot是如何獲取當(dāng)前運行環(huán)境呢,接下來由小編給大家介紹一下SpringBoot獲取當(dāng)前運行環(huán)境三種方式,需要的朋友可以參考下
    2024-01-01
  • 通過Java實現(xiàn)自己動手寫ls命令

    通過Java實現(xiàn)自己動手寫ls命令

    在前面的文章中,我們仔細(xì)的介紹了關(guān)于ls命令的使用和輸出結(jié)果,在本篇文章當(dāng)中我們用Java代碼自己實現(xiàn)ls命令,更加深入的了解ls命令
    2022-10-10
  • 基于Java實現(xiàn)空間濾波完整代碼

    基于Java實現(xiàn)空間濾波完整代碼

    空間濾波是一種采用濾波處理的影像增強(qiáng)方法。其理論基礎(chǔ)是空間卷積和空間相關(guān)。這篇文章主要介紹了基于Java的空間濾波代碼實現(xiàn),需要的朋友可以參考下
    2021-08-08
  • 【IntelliJ IDEA】Maven構(gòu)建自己的第一個Java后臺的方法

    【IntelliJ IDEA】Maven構(gòu)建自己的第一個Java后臺的方法

    本篇文章主要介紹了Maven構(gòu)建自己的第一個Java后臺的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • 淺談Java list.remove( )方法需要注意的兩個坑

    淺談Java list.remove( )方法需要注意的兩個坑

    這篇文章主要介紹了淺談Java list.remove( )方法需要注意的兩個坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 對Spring中bean線程安全的討論

    對Spring中bean線程安全的討論

    這篇文章主要介紹了對Spring中bean線程安全的討論,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Java常用字節(jié)流和字符流實例匯總

    Java常用字節(jié)流和字符流實例匯總

    這篇文章主要介紹了Java常用字節(jié)流和字符流實例匯總,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • Lucene?索引刪除策略源碼解析

    Lucene?索引刪除策略源碼解析

    這篇文章主要為大家介紹了Lucene?索引刪除策略源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • java字符串與字符數(shù)組之間的互轉(zhuǎn)方式

    java字符串與字符數(shù)組之間的互轉(zhuǎn)方式

    這篇文章主要介紹了java字符串與字符數(shù)組之間的互轉(zhuǎn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05

最新評論

房山区| 香港| 关岭| 赤水市| 额尔古纳市| 确山县| 南召县| 哈密市| 永登县| 尚义县| 阜平县| 大关县| 肇庆市| 黑河市| 武平县| 东山县| 芜湖市| 武胜县| 兴海县| 盖州市| 武夷山市| 锦州市| 洱源县| 昌邑市| 霸州市| 昭觉县| 城市| 鹤壁市| 南通市| 郓城县| 湘乡市| 庆阳市| 巩义市| 平遥县| 突泉县| 云梦县| 合水县| 丹凤县| 和静县| 山东省| 攀枝花市|