springboot实现邮件任务(简单文本,图片附件,验证码模板)

spring实现邮件任务(一)

1.添加邮件服务器依赖启动器

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

2.添加邮件服务配置

properties文件的配置

#发件人邮箱服务器相关的配置
spring.mail.host=smtp.qq.com
spring.mail.port=587
#写上自己的QQ邮箱,密码,密码为授权码,需要我们进入自己的QQ邮箱
spring.mail.username=
spring.mail.password=
spring.mail.default-encoding=UTF-8
#邮件服务超时时间配置
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=3000
spring.mail.properties.mail.smtp.writetimeout=5000

对于授权码的获取,操作如下,然后按照提示进行操作:
在这里插入图片描述

3.定制邮件发送服务

package com.example.demo.nine;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Service;

@Service
public class SendEmailService {
   @Autowired
   private JavaMailSenderImpl mailSender;
   @Value("${spring.mail.username}")
   private String from;
   public void sendSimpleEmail(String to,String subject,String text) {
	   //定制纯文本邮件信息
	 SimpleMailMessage message=new SimpleMailMessage();
	   
 message.setFrom(from);
 message.setTo(to);
 message.setSubject(subject);
  message.setText(text);
try {
	mailSender.send(message);
    System.out.println("纯文本邮件发送成功");
} catch (MailException e) {
		// TODO Auto-generated catch block
		System.out.println("纯文本邮件发送失败"+e.getMessage());
		e.printStackTrace();
	}
   }
   
}

4.纯文本邮件发送效果测试并完成测试

在测试类下编写代码:

package com.example.demo;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import com.example.demo.nine.SendEmailService;

@SpringBootTest
class LayuistudyApplicationTests {
    @Autowired
    private SendEmailService sendEmailService;
	@Test
	void contextLoads() {
	}
	
@Test
public void sendSimpleMailTest() {
//写上自己的QQ邮箱号码
String to="";
String subject="纯文本邮件标题";
String text="spring boot框架纯文本发送";
sendEmailService.sendSimpleEmail(to, subject, text);
	}

}

在这里插入图片描述

spring邮件实现带附件和图片的邮件(二)

1.定制邮件发送服务

对于相关的配置请看我前一篇文章,里面有对properties,以及pom文件的配置
首先,创建一个类,然后写下如下代码

//recId静态资源唯一标识标志,rscPath表示静态资源存放位置
   public void sendComplexEmail(String to,String subject,String text,String filePath,
		   String recId,String rscPath) {
	   //定制复杂邮件信息MimeMessage
	   MimeMessage message=mailSender.createMimeMessage();
	   try {
		   
		MimeMessageHelper helper=new MimeMessageHelper(message,true);
		helper.setFrom(from);
		helper.setTo(to);
		helper.setSubject(subject);
		helper.setText(text,true);
		FileSystemResource res=new FileSystemResource(new File(rscPath));
		//设置邮件内嵌静态资源
		helper.addInline(recId,res);
		
		//设置邮件附件
		//通过文件系统获取资源
		FileSystemResource file=new FileSystemResource(new File(filePath));
		//substring(x)是从字符串的的第x个字符截取
		//indexOf(String str): 返回指定字符str在字符串中(方法调用者)第一次出现处的起始索引,如果此字符串中没有这样的字符,则返回 -1。
		//File.separator相当于文件分隔符
		String fileName=filePath.substring(filePath.indexOf(File.separator));
		helper.addAttachment(fileName, file);
		//发送邮件
		mailSender.send(message);
		System.out.println("复杂邮件发送成功");
	} catch (MessagingException e) {
		// TODO Auto-generated catch block
		System.out.println("复杂邮件发送失败"+e.getMessage());
		e.printStackTrace();
	}
	   
   }

2.复杂邮件发送效果

现在测试类进行编写代码,然后运行代码进行测试:

 @Autowired
    private SendEmailService sendEmailService;
  @Test
	public void sendComplexEmailTest() {
    	//自己的QQ邮箱号码
		String to="";
		String subject="复杂邮件标题";
		//定义邮件内容
		//StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的
		//append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。
		StringBuilder text=new StringBuilder();
		text.append("<html><head><head>");
		text.append("<body><h1>祝大家万事如意</h1>");
		//cid为固定写法,rscId自定义的资源唯一标识
		String rscId="img001";
		text.append("<img src='cid:"+rscId+"'/></body>");
		text.append("</html>");
		//指定静态资源文件和附件路径
		String rscPath="D:\\file\\hello.jpg";
		String filePath="D:\\file\\hello.docx";
		sendEmailService.sendComplexEmail(to, subject,text.toString(), filePath,rscId, rscPath);
}

运行结果
在这里插入图片描述
在这里插入图片描述

spring发送模板邮件(三)

1.添加Thymeleaf模板引擎依赖启动器

对于peoperties文件和pom文件的配置请参照第一篇文章

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

2.定制邮件模板,HTML文件命名为

在这里插入图片描述

<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <title>用户验证码</title>
</head>
<body>
    <div><span th:text="${username}">XXX</span>&nbsp;先生/女士,您好:</div>
    <P style="text-indent: 2em">您的新用户验证码为<span th:text="${code}" style="color: cornflowerblue">123456</span>,请妥善保管。</P>
</body>
</html>

3.定制邮件发送服务

创建一个类SendEmailService.java文件

 @Autowired
   private JavaMailSenderImpl mailSender;
   @Value("${spring.mail.username}")
   private String from;
    //用于处理HTML内容
   public void sendTemplateEmail(String to,String subject,String content) {
	   //复杂类型的邮件传送
	   MimeMessage message=mailSender.createMimeMessage();
	   try {
		   //使用帮助类,并配置multipart多部件使用为true
		MimeMessageHelper helper=new MimeMessageHelper(message,true);
		helper.setFrom(from);
		helper.setTo(to);
		helper.setSubject(subject);
		helper.setText(content,true);
		//发送邮件
		mailSender.send(message);
		System.out.println("模板邮件发送成功");
	} catch (MessagingException e) {
		// TODO Auto-generated catch block
		System.out.println("邮件发送失败"+e.getMessage());
		e.printStackTrace();
	}
   }

4.模板邮件发送效果测试

  @Autowired
    private SendEmailService sendEmailService;
    @Autowired
	private TemplateEngine templateEngine;
	@Test
	public void sendTemplateEmailTest() {
		//写入自己的QQ邮箱号码
		String to="xxxxxxxxqq.com";
		String subject="程序员哈哈哈";
		//使用模板邮件定制邮件正文内容
		Context context=new Context();
		context.setVariable("username", "小海子");
		context.setVariable("code", "456321");
		
		//使用TemplateEngine设置要处理的模板页面
		//process第一个参数是解析的模板页面,第二个参数是页面的动态数据
		String emailContent=templateEngine.process("emailTemplate_vercode", context);
		sendEmailService.sendTemplateEmail(to, subject, emailContent);
		
	}

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值