使用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/n/371400.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
BOYIABOYIA
上一篇 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

发表回复

登录后才能评论