使用Springboot發送郵件的多種方式

一、發送簡單文本郵件

在Springboot中,可以使用JavaMailSender類很方便地發送簡單的文本郵件。首先,需要在其配置文件中添加郵件配置,如下所示:

spring.mail.host=smtp.qq.com
spring.mail.username=YOUR_USERNAME@qq.com
spring.mail.password=YOUR_PASSWORD
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.default-encoding=UTF-8

然後,在需要發送郵件的地方,可以使用如下代碼來發送簡單文本郵件:

@Autowired
private JavaMailSender mailSender;

public void sendSimpleEmail() {
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom("YOUR_USERNAME@qq.com");
    message.setTo("recipient@example.com");
    message.setSubject("Subject");
    message.setText("Body");
    mailSender.send(message);
}

二、發送HTML郵件

如果需要發送帶有HTML標籤的郵件,可以使用MimeMessageHelper類來實現。具體步驟如下:

  1. 在郵件配置文件中添加HTML郵件配置
  2. 使用MimeMessageHelper類構造HTML郵件內容
  3. 調用JavaMailSender類的send方法發送郵件

具體代碼實現如下:

@Autowired
private JavaMailSender mailSender;

public void sendHtmlEmail() throws MessagingException {
    MimeMessage message = mailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true);
    helper.setFrom("YOUR_USERNAME@qq.com");
    helper.setTo("recipient@example.com");
    helper.setSubject("Subject");
    helper.setText("<html><body><p>Html <b>body</b> with a <a href='http://www.example.com'>link</a>.</p></body></html>", true);
    mailSender.send(message);
}

三、發送帶有附件的郵件

類似地,如果需要在郵件中添加附件,可以使用MimeMessageHelper類構造含有附件的MimeMessage。具體代碼實現如下:

@Autowired
private JavaMailSender mailSender;

public void sendEmailWithAttachment() throws MessagingException {
    MimeMessage message = mailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true);
    helper.setFrom("YOUR_USERNAME@qq.com");
    helper.setTo("recipient@example.com");
    helper.setSubject("Subject");
    helper.setText("Body");
    ClassPathResource file = new ClassPathResource("attachment.pdf");
    helper.addAttachment("attachment.pdf", file);
    mailSender.send(message);
}

四、發送圖片郵件

如果需要在郵件中嵌入圖片,可以使用MimeMessageHelper類構造含有嵌入式圖片的MimeMessage。具體代碼實現如下:

@Autowired
private JavaMailSender mailSender;

public void sendEmailWithInlineImage() throws MessagingException {
    MimeMessage message = mailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true);
    helper.setFrom("YOUR_USERNAME@qq.com");
    helper.setTo("recipient@example.com");
    helper.setSubject("Subject");
    helper.setText("<html><body><img src='cid:identifier1234'></body></html>", true);
    ClassPathResource image = new ClassPathResource("image.jpg");
    helper.addInline("identifier1234", image);
    mailSender.send(message);
}

五、使用Thymeleaf來發送HTML郵件

使用Thymeleaf模板引擎可以方便地構造HTML格式的郵件。首先,在pom.xml文件中添加Thymeleaf依賴:

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

然後,在郵件配置文件中增加如下配置:

spring.thymeleaf.check-template-location=true
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.cache=false

最後,在需要發送郵件的地方,使用Thymeleaf模板渲染郵件內容,具體實現如下:

@Autowired
private JavaMailSender mailSender;

@Autowired
private TemplateEngine templateEngine;

public void sendEmailWithThymeleafTemplate() throws MessagingException {
    MimeMessage message = mailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true);
    helper.setFrom("YOUR_USERNAME@qq.com");
    helper.setTo("recipient@example.com");
    helper.setSubject("Subject");

    Context context = new Context();
    context.setVariable("title", "郵件標題");
    context.setVariable("message", "郵件內容");

    String htmlContent = templateEngine.process("email-template", context);
    helper.setText(htmlContent, true);

    mailSender.send(message);
}

六、小結

在Springboot中,發送郵件有多種方式,可以根據不同的需求選擇不同的方法。在此,我們介紹了發送簡單文本郵件、發送HTML郵件、發送帶有附件的郵件、發送圖片郵件以及使用Thymeleaf來發送HTML郵件等不同方法。

原創文章,作者:BOYIA,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/371400.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BOYIA的頭像BOYIA
上一篇 2025-04-23 00:48
下一篇 2025-04-23 00:48

相關推薦

  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • IDEA Java發送郵件出現錯誤解決方案

    IDEA Java是一款常用的Java開發工具,很多開發者都使用它來開發Java應用程序。然而,在使用IDEA Java發送郵件時,有可能會出現一些錯誤。本文將從多個方面對該錯誤進…

    編程 2025-04-29
  • 從ga角度解讀springboot

    springboot作為目前廣受歡迎的Java開發框架,其中的ga機制在整個開發過程中起著至關重要的作用。 一、ga是什麼 ga即Group Artifacts的縮寫,它是Mave…

    編程 2025-04-29
  • Python緩存圖片的處理方式

    本文將從多個方面詳細闡述Python緩存圖片的處理方式,包括緩存原理、緩存框架、緩存策略、緩存更新和緩存清除等方面。 一、緩存原理 緩存是一種提高應用程序性能的技術,在網路應用中流…

    編程 2025-04-29
  • Python獲取當前日期的多種方法

    本文介紹如何使用Python獲取當前日期,並提供了多種方法,包括使用datetime模塊、time模塊以及第三方庫dateutil等。讓我們一步一步來看。 一、使用datetime…

    編程 2025-04-29
  • Python生成隨機數的多種方法

    本文將從以下幾個方面詳細介紹如何使用Python生成隨機數。 一、random模塊的使用 Python內置的random模塊能夠生成偽隨機數,使用該模塊,可以生成隨機數、隨機整數等…

    編程 2025-04-29
  • Python在線編輯器的優勢與實現方式

    Python在線編輯器是Python語言愛好者的重要工具之一,它可以讓用戶方便快捷的在線編碼、調試和分享代碼,無需在本地安裝Python環境。本文將從多個方面對Python在線編輯…

    編程 2025-04-28
  • Java表單提交方式

    Java表單提交有兩種方式,分別是get和post。下面我們將從以下幾個方面詳細闡述這兩種方式。 一、get方式 1、什麼是get方式 在get方式下,表單的數據會以查詢字元串的形…

    編程 2025-04-27
  • 用Pythonic的方式編寫高效代碼

    Pythonic是一種編程哲學,它強調Python編程風格的簡單、清晰、優雅和明確。Python應該描述為一種語言而不是一種編程語言。Pythonic的編程方式不僅可以使我們在編碼…

    編程 2025-04-27
  • Java多版本支持實現方式

    本文將從以下幾個方面闡述如何實現Java多版本支持,並給出可行的代碼示例。 一、多版本Java環境概述 Java是一門跨平台的編程語言,但是在不同的應用場景下,可能需要使用不同版本…

    編程 2025-04-27

發表回復

登錄後才能評論