返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot Mail邮件任务详情
  • 720
分享到

SpringBoot Mail邮件任务详情

2024-04-02 19:04:59 720人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、引言二、简单使用1、pom包配置2、在application.properties中添加邮箱配置3、编写mailService,这里只提出实现类。4、编写test类进行测试三

一、引言

发送邮件应该是网站的必备功能之一,什么注册验证,忘记密码或者是给用户发送营销信息。最早期的时候我们会使用JavaMail相关api来写发送邮件的相关代码,后来spring退出了JavaMailSender更加简化了邮件发送的过程,在之后SpringBoot对此进行了封装就有了现在的spring-boot-starter-mail,本章文章的介绍主要来自于此包。

二、简单使用

1、pom包配置

pom包里面添加spring-boot-starter-mail包引用

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

2、在application.properties中添加邮箱配置

spring.mail.host=smtp.1234.163.com //邮箱服务器地址
spring.mail.username=5678@oo.com //用户名
spring.mail.passWord=09876 //密码
spring.mail.default-encoding=UTF-8
mail.fromMail.addr=65432@oo.com //以谁来发送邮件

3、编写mailService,这里只提出实现类。

@Component
public class MailServiceImpl implements MailService{
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private JavaMailSender mailSender;
@Value("${mail.fromMail.addr}")
private String from;
@Override
public void sendSimpleMail(String to, String subject, String content) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject);
message.setText(content);
try {
mailSender.send(message);
logger.info("简单邮件已经发送。");
} catch (Exception e) {
logger.error("发送简单邮件时发生异常!", e);
}
}
}

4、编写test类进行测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class MailServiceTest {
@Autowired
private MailService MailService;
@Test
public void testSimpleMail() throws Exception {
MailService.sendSimpleMail("123456w@126.com","test simple mail"," hello this is simple mail");
}
}

至此一个简单的文本发送就完成了。

三、加点料

但是在正常使用的过程中,我们通常在邮件中加入图片或者附件来丰富邮件的内容,下面讲介绍如何使用springboot来发送丰富的邮件。

3、发送html格式邮件

其它都不变在MailService添加sendHtmlMail方法.

public void sendHtmlMail(String to, String subject, String content) {
MimeMessage message = mailSender.createMimeMessage();
try {
//true表示需要创建一个multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);

mailSender.send(message);
logger.info("html邮件发送成功");
} catch (MessagingException e) {
logger.error("发送html邮件时发生异常!", e);
}
}

在测试类中构建html内容,测试发送:

@Test
public void testHtmlMail() throws Exception {
String content="<html>\n" +
"<body>\n" +
" <h3>hello world ! 这是一封Html邮件!</h3>\n" +
"</body>\n" +
"</html>";
MailService.sendHtmlMail("ityouknow@126.com","test simple mail",content);
}

3、发送带附件的邮件

在MailService添加sendAttachmentsMail方法.

public void sendAttachmentsMail(String to, String subject, String content, String filePath){
MimeMessage message = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);

FileSystemResource file = new FileSystemResource(new File(filePath));
String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
helper.addAttachment(fileName, file);

mailSender.send(message);
logger.info("带附件的邮件已经发送。");
} catch (MessagingException e) {
logger.error("发送带附件的邮件时发生异常!", e);
}
}

添加多个附件可以使用多条 helper.addAttachment(fileName, file)

4、在测试类中添加测试方法

@Test
public void sendAttachmentsMail() {
String filePath="e:\\tmp\\application.log";
mailService.sendAttachmentsMail("ityouknow@126.com", "主题:带附件的邮件", "有附件,请查收!", filePath);
}

5、发送带静态资源的邮件

邮件中的静态资源一般就是指图片,在MailService添加sendAttachmentsMail方法.

public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId){
MimeMessage message = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
FileSystemResource res = new FileSystemResource(new File(rscPath));
helper.addInline(rscId, res);
mailSender.send(message);
logger.info("嵌入静态资源的邮件已经发送。");
} catch (MessagingException e) {
logger.error("发送嵌入静态资源的邮件时发生异常!", e);
}
}

在测试类中添加测试方法:

@Test
public void sendInlineResourceMail() {
String rscId = "12345";
String content="<html><body>这是有图片的邮件:<img src=\'cid:" + rscId + "\' ></body></html>";
String imgPath = "C:\\Users\\summer\\Pictures\\favicon.png";
mailService.sendInlineResourceMail("ityouknow@126.com", "主题:这是有图片的邮件", content, imgPath, rscId);
}

添加多个图片可以使用多条 <img src='cid:" + rscId + "' > 和 helper.addInline(rscId, res) 来实现
到此所有的邮件发送服务已经完成了。

邮件系统:

上面发送邮件的基础服务就这些了,但是如果我们要做成一个邮件系统的话还需要考虑以下几个问题:

邮件模板:

我们会经常收到这样的邮件:
尊敬的neo用户:
恭喜您注册成为xxx网的用户,,同时感谢您对xxx的关注与支持并欢迎您使用xx的产品与服务。
...
其中只有neo这个用户名在变化,其它邮件内容均不变,如果每次发送邮件都需要手动拼接的话会不够优雅,并且每次模板的修改都需要改动代码的话也很不方便,因此对于这类邮件需求,都建议做成邮件模板来处理。模板的本质很简单,就是在模板中替换变化的参数,转换为html字符串即可,这里以thymeleaf为例来演示。

四、pom中导入thymeleaf的包

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

五、在resorces/templates下创建emailTemplate.html

<!DOCTYPE html>
<html lang="zh" xmlns:th="Http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
您好,这是验证邮件,请点击下面的链接完成验证,

<a href="#" rel="external nofollow"  th:href="@{ http://www.i123456w.com/neo/{id}(id=${id}) }" rel="external nofollow" >激活账号</a>
</body>
</html>

六、解析模板并发送

@Test
public void sendTemplateMail() {
//创建邮件正文
Context context = new Context();
context.setVariable("id", "006");
String emailContent = templateEngine.process("emailTemplate", context);

mailService.sendHtmlMail("ityouknow@126.com","主题:这是模板邮件",emailContent);
}

1、发送失败

因为各种原因,总会有邮件发送失败的情况,比如:邮件发送过于频繁、网络异常等。在出现这种情况的时候,我们一般会考虑重新重试发送邮件,会分为以下几个步骤来实现:

  • 1、接收到发送邮件请求,首先记录请求并且入库。
  • 2、调用邮件发送接口发送邮件,并且将发送结果记录入库。
  • 3、启动定时系统扫描时间段内,未发送成功并且重试次数小于3次的邮件,进行再次发送

七、异步发送

很多时候邮件发送并不是我们主业务必须关注的结果,比如通知类、提醒类的业务可以允许延时或者失败。这个时候可以采用异步的方式来发送邮件,加快主交易执行速度,在实际项目中可以采用MQ发送邮件相关参数,监听到消息队列之后启动发送邮件。

到此这篇关于SpringBoot Mail邮件任务详情的文章就介绍到这了,更多相关SpringBoot Mail 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot Mail邮件任务详情

本文链接: https://lsjlt.com/news/149391.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringBoot Mail邮件任务详情
    目录一、引言二、简单使用1、pom包配置2、在application.properties中添加邮箱配置3、编写mailService,这里只提出实现类。4、编写test类进行测试三...
    99+
    2024-04-02
  • SpringBoot Mail邮件任务怎么配置
    本篇内容介绍了“SpringBoot Mail邮件任务怎么配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、引言发送邮件应该是...
    99+
    2023-06-30
  • SpringBoot任务之详解邮件任务
    01: 异步任务 02: 定时任务 一、SpringBoot--任务:邮件任务 1.1 添加依赖(增加邮件支持) pom.xml <dependency> ...
    99+
    2024-04-02
  • SpringBoot整合Mail发送邮件功能
    目录前言Maven依赖使用QQ邮箱演示发送普通邮件验证码案例前言 我们在网站上注册账号的时候一般需要获取验证码,而这个验证码一般发送在你的手机号上还有的是发送在你的邮箱中,注册,账号...
    99+
    2024-04-02
  • linux发送邮件mail详解
    在Linux系统中,可以使用mail命令来发送邮件。mail命令是一个基于文本的邮件客户端工具,可以通过命令行发送邮件。使用mail...
    99+
    2023-09-07
    Linux
  • springboot实现自动邮件发送任务详解
    目录1.导入jar包2.配置文件3.测试复杂的邮件发送springboot可以很容易实现邮件的发送 具体实现步骤: 1.导入jar包 <dependency> &...
    99+
    2024-04-02
  • 详解Springboot中的异步、定时、邮件任务
    目录一、异步任务1、编写一个类AsyncService 2、编写一个AsyncController类3、开启异步二、邮件任务1、引入依赖2、配置mail3、测试三、定时任务1、编写一...
    99+
    2024-04-02
  • Springboot如何实现邮件任务
    这篇文章给大家分享的是有关Springboot如何实现邮件任务的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。邮件任务pom.xml <dependency>   ...
    99+
    2023-06-17
  • SpringBoot任务之邮件任务的示例分析
    这篇文章主要介绍SpringBoot任务之邮件任务的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!01: 异步任务02: 定时任务一、SpringBoot--任务:邮件任务1.1 添加依赖(增加邮件支持)po...
    99+
    2023-06-15
  • SpringBoot中如何整合定时任务和邮件任务
    这篇文章主要讲解了“SpringBoot中如何整合定时任务和邮件任务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot中如何整合定时任务和邮件任务”吧!定时任务项目开发中经常...
    99+
    2023-06-08
  • Python利用Flask-Mail实现发送邮件详解
    目录前言qq邮箱开启smtp服务Flask-Mail的安装Flask-MailQQ邮箱的配置Flask-Mail的使用前言 在开发过程中,很多应用程序都需要通过邮件提醒用户, Fla...
    99+
    2024-04-02
  • springboot怎么实现自动邮件发送任务
    这篇“springboot怎么实现自动邮件发送任务”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“springboot怎么实现...
    99+
    2023-06-29
  • springboot中swagger、异步/定时/邮件任务的问题
    目录1、SpringBoot:集成Swagger终极版1.1、Swagger简介1.2、SpringBoot集成Swagger1.3、配置Swagger1.4、配置扫描接口1.5、配...
    99+
    2024-04-02
  • PHP Mail 函数详解:邮件发送的基本原理
    PHP 是一种功能强大的服务器端脚本语言,被广泛应用于网站开发中。其中,邮件发送是网站功能中常用的一个部分,PHP 提供了 Mail 函数用于发送电子邮件。本文将详细解析 PHP Ma...
    99+
    2024-04-02
  • Springboot中异步、定时、邮件任务的示例分析
    这篇文章主要介绍Springboot中异步、定时、邮件任务的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、异步任务1、编写一个类AsyncService异步处理还是非常常用的,比如我们在网站上发送邮件,后...
    99+
    2023-06-25
  • JavaScript中的宏任务和微任务详情
    目录1、微任务有哪些2、宏任务有哪些3、案例3.1 结论4、代码案例4.1 代码分析4.2 结论和运用的场景1、微任务有哪些 Promise await和async 2、宏任务有哪些...
    99+
    2024-04-02
  • SpringBoot(十)之邮件服务
    springboot仍然在狂速发展,才五个多月没有关注,现在看官网已经到1.5.3.RELEASE版本了。准备慢慢在写写springboot相关的文章,本篇文章使用springboot最新版本1.5.3进行开发。发送邮件应该是网站的必备功能...
    99+
    2023-05-31
    springboot 邮件服务 bo
  • PHP邮件发送函数详细解析:mail、smtp、PHPMailer等函数的邮件发送操作指南
    PHP邮件发送函数详细解析:mail、smtp、PHPMailer等函数的邮件发送操作指南,需要具体代码示例一、引言在现代社会中,电子邮件已经成为人们沟通、交流信息的重要工具之一。在Web开发中,我们经常会遇到发送邮件的需求,无论是用户注册...
    99+
    2023-11-18
    PHP邮件发送 SMTP协议 mail函数
  • SpringBoot定时任务 @Scheduled详解
    博主在最近的开发中又遇到了关于定时调度的开发任务,在定时调度其实有很多的第三方平台可以接入,但是其实在SpringBoot有自带的定时任务注解@Scheduled。@Scheduled可以通过注解配置快速实现方法的定时调度,直接在方法加上@...
    99+
    2023-10-01
    spring boot java spring
  • PHP Mail 详细解读:深入了解邮件发送的技术细节
    PHP是一种流行的服务器端脚本语言,广泛用于Web开发。邮件发送是Web应用程序中常见的功能之一,如何使用PHP来发送邮件是开发人员需要掌握的技能。本文将深入解读PHP中的邮件发送功能...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作