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

Java使用Mail構(gòu)建郵件功能的完整指南

 更新時間:2025年03月14日 09:46:40   作者:拾荒的小海螺  
Java Mail API 是一個功能強大的工具,它可以幫助開發(fā)者輕松實現(xiàn)郵件的發(fā)送與接收功能,本文將介紹如何使用 Java Mail 發(fā)送和接收郵件,希望對大家有所幫助

1、簡述

在現(xiàn)代應(yīng)用中,郵件服務(wù)是不可或缺的一部分,無論是發(fā)送通知、驗證用戶身份還是傳遞報告。Java Mail API 是一個功能強大的工具,它可以幫助開發(fā)者輕松實現(xiàn)郵件的發(fā)送與接收功能。本文將介紹如何使用 Java Mail 發(fā)送和接收郵件,并提供詳細(xì)的使用樣例。

樣例代碼:https://gitee.com/lhdxhl/springboot-example.git

2、主要特點

協(xié)議支持:支持 SMTP、IMAP 和 POP3 協(xié)議。

附件功能:支持多種格式的附件。

富文本支持:支持 HTML 郵件。

加密傳輸:支持 SSL 和 TLS 協(xié)議。

跨平臺:完全基于 Java,可在各種操作系統(tǒng)上運行。

在使用 Mail 之前,需要添加其依賴。以下是 Mail 的 Maven 依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

3、發(fā)送樣例

在發(fā)送之前,要準(zhǔn)備以下信息:

SMTP 服務(wù)器地址(如:smtp.gmail.com、smtp.qq.com、smtp.126.com)

發(fā)件人郵箱及密碼

收件人郵箱

在調(diào)用之前要確保郵箱SMTP是否開啟,開啟SMTP會生成密鑰,通過該密鑰來配合host發(fā)送郵件,如果是gmail要確認(rèn)是否開啟兩步驗證:

3.1 發(fā)送純文本郵件

以下是發(fā)送一封簡單文本郵件的代碼:

import jakarta.mail.*;
import jakarta.mail.internet.*;
import java.util.Properties;

public class MailExample {
    public static void sendTextMail() {
        String host = "smtp.gmail.com";  // SMTP 服務(wù)器地址
        String from = "your_email@gmail.com";
        String password = "your_password";// 開啟SMTP 申請的密鑰
        String to = "recipient_email@gmail.com";

        // 配置屬性
        Properties props = new Properties();
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.port", "587");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");

        // 獲取會話對象
        Session session = Session.getInstance(props, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(from, password);
            }
        });

        try {
            // 創(chuàng)建郵件
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
            message.setSubject("Java Mail 測試");
            message.setText("這是一封通過 Java Mail 發(fā)送的簡單文本郵件!");

            // 發(fā)送郵件
            Transport.send(message);
            System.out.println("郵件發(fā)送成功!");
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        sendTextMail();
    }
}

3.2 發(fā)送 HTML 郵件

HTML 郵件可以包含更豐富的內(nèi)容,如圖片、超鏈接等。

public static void sendHtmlMail() {
    String host = "smtp.gmail.com";
    String from = "your_email@gmail.com";
    String password = "your_password";// 開啟SMTP 申請的密鑰
    String to = "recipient_email@gmail.com";

    Properties props = new Properties();
    props.put("mail.smtp.host", host);
    props.put("mail.smtp.port", "587");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");

    Session session = Session.getInstance(props, new Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(from, password);
        }
    });

    try {
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
        message.setSubject("HTML 郵件測試");

        // 設(shè)置 HTML 內(nèi)容
        String htmlContent = "<h1>歡迎使用 Java Mail</h1><p>這是一個 <b>HTML</b> 格式的郵件!</p>";
        message.setContent(htmlContent, "text/html;charset=UTF-8");

        Transport.send(message);
        System.out.println("HTML 郵件發(fā)送成功!");
    } catch (MessagingException e) {
        e.printStackTrace();
    }
}

3.3 發(fā)送帶附件的郵件

支持多種附件格式。

public static void sendMailWithAttachment() {
    String host = "smtp.gmail.com";
    String from = "your_email@gmail.com";
    String password = "your_password";
    String to = "recipient_email@gmail.com";

    Properties props = new Properties();
    props.put("mail.smtp.host", host);
    props.put("mail.smtp.port", "587");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");

    Session session = Session.getInstance(props, new Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(from, password);
        }
    });

    try {
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
        message.setSubject("帶附件的郵件測試");

        // 創(chuàng)建郵件正文
        MimeBodyPart textPart = new MimeBodyPart();
        textPart.setText("請查看附件!");

        // 創(chuàng)建附件部分
        MimeBodyPart attachmentPart = new MimeBodyPart();
        attachmentPart.attachFile("path/to/file.txt"); // 附件路徑

        // 合并正文和附件
        Multipart multipart = new MimeMultipart();
        multipart.addBodyPart(textPart);
        multipart.addBodyPart(attachmentPart);

        message.setContent(multipart);

        Transport.send(message);
        System.out.println("帶附件的郵件發(fā)送成功!");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

3.4 使用 SSL 加密發(fā)送郵件

SSL 是更安全的郵件傳輸方式。

props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.ssl.protocols", "TLSv1.2");

將上述配置替換為 SSL 的配置即可。

4、總結(jié)

通過本文的學(xué)習(xí),您應(yīng)該能夠使用 Java Mail 實現(xiàn)以下功能:

  • 發(fā)送文本郵件
  • 發(fā)送 HTML 格式的郵件
  • 發(fā)送帶附件的郵件
  • 配置 SSL 加密傳輸

到此這篇關(guān)于Java使用Mail構(gòu)建郵件功能的完整指南的文章就介紹到這了,更多相關(guān)Java Mail郵件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解如何在SpringBoot里使用SwaggerUI

    詳解如何在SpringBoot里使用SwaggerUI

    本篇文章主要介紹了詳解如何在SpringBoot里使用SwaggerUI,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • 解決IDEA上循環(huán)依賴報錯問題Error:java: Annotation processing is not supported for module cycles

    解決IDEA上循環(huán)依賴報錯問題Error:java: Annotation processing&n

    這篇文章主要介紹了解決IDEA上循環(huán)依賴報錯問題Error:java: Annotation processing is not supported for module cycles,具有很好的參考價值,希望對大家有所幫助
    2023-10-10
  • Java數(shù)據(jù)結(jié)構(gòu)之插入排序與希爾排序

    Java數(shù)據(jù)結(jié)構(gòu)之插入排序與希爾排序

    在本篇文章,我們將為小伙伴們進行排序概念的基本講解并具體講解其中的兩種基礎(chǔ)排序:插入排序和希爾排序,希望小伙伴們能夠從中有所收獲
    2023-04-04
  • Java高效實現(xiàn)Word轉(zhuǎn)PDF的完整指南

    Java高效實現(xiàn)Word轉(zhuǎn)PDF的完整指南

    這篇文章主要為大家詳細(xì)介紹了如何用 Spire.Doc for Java 庫實現(xiàn)Word到PDF文檔的快速轉(zhuǎn)換,并解析其轉(zhuǎn)換選項的靈活配置技巧,希望對大家有所幫助
    2025-08-08
  • Java讀寫文件創(chuàng)建文件夾多種方法示例詳解

    Java讀寫文件創(chuàng)建文件夾多種方法示例詳解

    這篇文章主要介紹了Java讀寫文件創(chuàng)建文件夾等多種操作的方法,大家參考使用吧
    2013-11-11
  • Spring bean加載控制實現(xiàn)方法

    Spring bean加載控制實現(xiàn)方法

    很多時候我們需要根據(jù)不同的條件在容器中加載不同的Bean,或者根據(jù)不同的條件來選擇是否在容器中加載某個Bean,這就是Bean的加載控制,一般我們可以通過編程式或注解式兩種不同的方式來完成Bean的加載控制
    2022-12-12
  • 詳解SSM框架下結(jié)合log4j、slf4j打印日志

    詳解SSM框架下結(jié)合log4j、slf4j打印日志

    本篇文章主要介紹了詳解SSM框架下結(jié)合log4j、slf4j打印日志,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Java基礎(chǔ)知識精通二維數(shù)組的應(yīng)用

    Java基礎(chǔ)知識精通二維數(shù)組的應(yīng)用

    為了方便組織各種信息,計算機常將信息以表的形式進行組織,然后再以行和列的形式呈現(xiàn)出來。二維數(shù)組的結(jié)構(gòu)決定了其能非常方便地表示計算機中的表,以第一個下標(biāo)表示元素所在的行,第二個下標(biāo)表示元素所在的列。下面簡單了解一下二維數(shù)組,包括數(shù)組的聲明和初始化
    2022-04-04
  • mybatis-plus分頁查詢的實現(xiàn)實例

    mybatis-plus分頁查詢的實現(xiàn)實例

    頁查詢是一項常用的數(shù)據(jù)庫查詢方法,本文主要介紹了mybatis-plus分頁查詢的實現(xiàn)實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Java實現(xiàn)Treap樹的示例代碼

    Java實現(xiàn)Treap樹的示例代碼

    本文主要介紹了Java實現(xiàn)Treap樹的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評論

三明市| 郁南县| 南部县| 池州市| 乌恰县| 延边| 余江县| 太康县| 资溪县| 南丹县| 吴忠市| 五河县| 涟源市| 咸阳市| 邵阳市| 邻水| 鸡泽县| 翁源县| 仁怀市| 广汉市| 汉中市| 黑龙江省| 南京市| 鄄城县| 泸州市| 通江县| 济南市| 连江县| 罗平县| 平乐县| 思茅市| 津市市| 安西县| 广饶县| 德保县| 通化县| 东山县| 临潭县| 岱山县| 奈曼旗| 海宁市|