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

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

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

1、簡(jiǎn)述

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

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

2、主要特點(diǎn)

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

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

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

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

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

在使用 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會(huì)生成密鑰,通過(guò)該密鑰來(lái)配合host發(fā)送郵件,如果是gmail要確認(rèn)是否開啟兩步驗(yàn)證:

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

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

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 申請(qǐng)的密鑰
        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");

        // 獲取會(huì)話對(duì)象
        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 測(cè)試");
            message.setText("這是一封通過(guò) Java Mail 發(fā)送的簡(jiǎn)單文本郵件!");

            // 發(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 申請(qǐng)的密鑰
    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 郵件測(cè)試");

        // 設(shè)置 HTML 內(nèi)容
        String htmlContent = "<h1>歡迎使用 Java Mail</h1><p>這是一個(gè) <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("帶附件的郵件測(cè)試");

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

        // 創(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é)

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

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

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

相關(guān)文章

  • Java向數(shù)據(jù)庫(kù)插入中文出現(xiàn)亂碼解決方案

    Java向數(shù)據(jù)庫(kù)插入中文出現(xiàn)亂碼解決方案

    這篇文章主要介紹了Java向數(shù)據(jù)庫(kù)插入中文出現(xiàn)亂碼解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • SpringBoot構(gòu)建Restful service完成Get和Post請(qǐng)求

    SpringBoot構(gòu)建Restful service完成Get和Post請(qǐng)求

    這篇文章主要介紹了SpringBoot構(gòu)建Restful service完成Get和Post請(qǐng)求的示例代碼,感興趣的朋友一起看看吧
    2017-08-08
  • Spring Boot高可用限流三種實(shí)現(xiàn)解決方案

    Spring Boot高可用限流三種實(shí)現(xiàn)解決方案

    限流是對(duì)某一時(shí)間窗口內(nèi)的請(qǐng)求數(shù)進(jìn)行限制,保持系統(tǒng)的可用性和穩(wěn)定性,本文就介紹了Spring Boot高可用限流三種實(shí)現(xiàn)解決方案,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • SpringMVC的注解@RequestMapping屬性及使用

    SpringMVC的注解@RequestMapping屬性及使用

    這篇文章主要為大家介紹了SpringMVC注解@RequestMapping屬性及使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Java 比較字符串實(shí)例詳解

    Java 比較字符串實(shí)例詳解

    這篇文章主要介紹了 Java 比較字符串實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Java servlet后端開發(fā)超詳細(xì)教程

    Java servlet后端開發(fā)超詳細(xì)教程

    Servlet指在服務(wù)器端執(zhí)行的一段Java代碼,可以接收用戶的請(qǐng)求和返回給用戶響應(yīng)結(jié)果,下面這篇文章主要給大家介紹了關(guān)于Java.servlet生命周期的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • javafx實(shí)現(xiàn)時(shí)鐘效果

    javafx實(shí)現(xiàn)時(shí)鐘效果

    這篇文章主要為大家詳細(xì)介紹了javafx實(shí)現(xiàn)時(shí)鐘效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • springboot3.x版本集成log4j遇到Logging?system?failed?to?initialize?using?configuration?from‘classpath:log4問(wèn)題

    springboot3.x版本集成log4j遇到Logging?system?failed?to?initial

    使用Springboot?3.x集成Log4j時(shí)可能會(huì)遇到版本沖突的問(wèn)題,這通??梢酝ㄟ^(guò)檢查Maven依賴樹來(lái)識(shí)別,一旦發(fā)現(xiàn)沖突,將Log4j的版本統(tǒng)一更新到最新的兼容版本,例如2.21.1,即可解決問(wèn)題,此方法有效解決了日志打印錯(cuò)誤,是處理類似問(wèn)題的一個(gè)實(shí)用參考
    2024-09-09
  • java使用UDP實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信

    java使用UDP實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信

    這篇文章主要為大家詳細(xì)介紹了java使用UDP實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Java進(jìn)程間通信之消息隊(duì)列

    Java進(jìn)程間通信之消息隊(duì)列

    這篇文章主要為大家詳細(xì)介紹了Java進(jìn)程間通信之消息隊(duì)列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03

最新評(píng)論