基于SpringBoot的邮箱发送功能

准备工作

我们先要准备一个可以发送的邮箱,我这里以我的126邮箱为例,现在发送邮件的规则,要求你输入一种叫做授权码的东西,注意这个东西不是密码。

获取授权码步骤
在这里插入图片描述
对“POP3/SMTP服务”和“IMAP/SMTP服务”进行勾选
在这里插入图片描述
开启授权码,之后便能获得授权码了
在这里插入图片描述

源码实现

项目总体目录结构

在这里插入图片描述

pom.xml文件

<!--邮件依赖-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!--thymeleaf用于模板邮件  -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

application.properties配置文件

# 邮件服务地址
spring.mail.host=smtp.126.com
spring.mail.username=honger1234t_t@126.com
 #这里是授权码不是邮箱密码
spring.mail.password=java1234 
spring.mail.default-encoding=utf-8

MailService.java

package com.honger.service.mail;

import java.io.File;

import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

@Service
public class MailService {

	private static final Logger log = LoggerFactory.getLogger(MailService.class);

	@Value("${spring.mail.username}")
	private String from;

	@Resource
	private JavaMailSender javaMailSender;

	/**
	 * @Description: 简单文本邮件
	 * @author zt
	 * @date 2020年3月3日 上午12:03:35
	 */
	public void sendSimpleMail(String to, String subject, String content) {
		SimpleMailMessage simpleMailMessage = new SimpleMailMessage();

		simpleMailMessage.setTo(to);
		simpleMailMessage.setSubject(subject);
		simpleMailMessage.setText(content);
		simpleMailMessage.setFrom(from);

		javaMailSender.send(simpleMailMessage);
	}

	/**
	 * @Description: Html邮件
	 * @author zt
	 * @date 2020年3月3日 上午12:04:06
	 */
	public void sendHtmlMail(String to, String subject, String content) throws MessagingException {

		MimeMessage message = javaMailSender.createMimeMessage();

		MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
		messageHelper.setTo(to);
		messageHelper.setSubject(subject);
		messageHelper.setText(content, true);
		messageHelper.setFrom(from);

		javaMailSender.send(message);
	}

	/**
	 * @Description: 带附件的邮件
	 * @author zt
	 * @date 2020年3月3日 上午12:12:30
	 */
	public void sendAttachmentMail(String to, String subject, String content, String filePath)
			throws MessagingException {
		MimeMessage message = javaMailSender.createMimeMessage();

		MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
		messageHelper.setFrom(from);
		messageHelper.setTo(to);
		messageHelper.setSubject(subject);
		messageHelper.setText(content, true);

		FileSystemResource fileSystemResource = new FileSystemResource(new File(filePath));
		String fileName = fileSystemResource.getFilename();
		messageHelper.addAttachment(fileName, fileSystemResource);

		javaMailSender.send(message);
	}

	/**
	 * @Description: 发送图片邮件
	 * @author zt
	 * @date 2020年3月3日 上午12:32:56
	 */
	public void sendInlineMail(String to, String subject, String content, String imagePath, String imageId) {

		log.info("发送静态邮件开始:{},{},{},{},{}", to, subject, content, imagePath, imageId);
		MimeMessage message = javaMailSender.createMimeMessage();

		MimeMessageHelper messageHelper = null;
		try {
			messageHelper = new MimeMessageHelper(message, true);
			messageHelper.setFrom(from);
			messageHelper.setTo(to);
			messageHelper.setSubject(subject);
			messageHelper.setText(content, true);

			FileSystemResource fileSystemResource = new FileSystemResource(new File(imagePath));
			messageHelper.addInline(imageId, fileSystemResource);

			javaMailSender.send(message);
			log.info("发送静态邮件成功");
		} catch (MessagingException e) {
			log.error("发送静态邮件失败");
		}
	}

}

测试类 MailTest.java

package com.honger.sevice.mail;

import javax.annotation.Resource;
import javax.mail.MessagingException;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

import com.honger.service.mail.MailService;

@SpringBootTest
@RunWith(SpringRunner.class)
public class MailTest {

	@Resource
	private MailService mailService;

	@Resource
	private TemplateEngine templateEngine;

	@Test
	public void sendSimpleMailTest() {
		mailService.sendSimpleMail("[email protected]", "这是一封简单的文本邮件", "这是一封简单的文本邮件");
	}

	@Test
	public void sendHtmlMailTest() throws MessagingException {
		String content = "<html>\n" + "<body>\n" + "<h1>" + "这是一封HTML邮件" + "</h1>\n" + "</body>\n" + "</html>";

		mailService.sendHtmlMail("[email protected]", "这是一封HTML邮件", content);
	}

	@Test
	public void sendAttachmentMailTest() throws MessagingException {

		String filePath = "C:\\Users\\18316\\Desktop\\年终工作总结-张庭.docx";
		mailService.sendAttachmentMail("[email protected]", "这是一封带附件的邮件", "这是一封带附件的邮件", filePath);
	}

	@Test
	public void sendInlineMailTest() throws MessagingException {
		String imagePath = "G:\\qrcode1.jpg";
		String imageId = "image1";
		String content = "<html>\n" + "<body>\n" + "这是图片邮件" + "<img src=\'cid:" + imageId + "\'>" + "</body>\n"
				+ "</html>";
		mailService.sendInlineMail("[email protected]", "这是一封带有图片的邮件", content, imagePath, imageId);
	}

	@Test
	public void sendEmailTemplate() throws MessagingException {

		Context context = new Context();
		context.setVariable("id", "测试");

		String templateContext = templateEngine.process("EmailTemplate", context);
		mailService.sendHtmlMail("[email protected]", "这是一封模板邮件", templateContext);

	}
}

邮件模板HTML文件EmailTemplate.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>邮件模板</title>
</head>
<body>
 	你好,感谢您的注册,这是一封已注册邮件,请点击下面的链接完成注册,感谢您的支持。
 	<a href="#" th:href="@{https://blog.csdn.net/qq_38738510?id={id}(id=${id})}">激活账户</a>
</body>
</html>

以上便是全部代码

猜你喜欢

转载自blog.csdn.net/qq_38738510/article/details/104781695
今日推荐