打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java技术:SpringBoot实现邮件发送功能

      

       

邮件发送功能基本是每个完整业务系统要集成的功能之一,今天小编给大家介绍一下SpringBoot实现邮件发送功能,希望对大家能有所帮助!

今天主要给大家分享简单邮件发送、HTML邮件发送、包含附件的邮件发送三个例子,具体源码链接在文章末尾,有需要的朋友可以自己下载学习一下。

1、创建一个基本的SpringBoot项目,pom文件导入发送邮件的依赖

<!--邮件发送依赖包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!--freemarker制作Html邮件模板依赖包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

2、application.yml 文件配置配置邮件发送信息

spring:
mail:
host: smtp.qq.com
username: xxx@qq.com #发件人邮箱
password: xxxxx #授权码
protocol: smtp
properties.mail.smtp.auth:true
properties.mail.smtp.port:465#发件邮箱端口
properties.mail.display.sendmail: xiaoMing
properties.mail.display.sendname: xiaoming
properties.mail.smtp.starttls.enable:true
properties.mail.smtp.starttls.required:true
properties.mail.smtp.ssl.enable:true#是否启用ssl
default-encoding: utf-8#编码格式
freemarker:
cache:false
settings:
classic_compatible:true
suffix: .html
charset: UTF-8
template-loader-path: classpath:/templates/

3、创建IEmailService 接口文件,定义邮件发送的接口

package com.springboot.email.email.service;


import javax.mail.MessagingException;
import java.util.List;


public interface IEmailService {
/**
* 发送简单文本邮件
*/
void sendSimpleMail(String receiveEmail, String subject, String content);
/**
* 发送HTML格式的邮件
*/
void sendHtmlMail(String receiveEmail, String subject, String emailContent) throws MessagingException;
/**
* 发送包含附件的邮件
*/
void sendAttachmentsMail(String receiveEmail, String subject, String emailContent, List<String> filePathList) throws MessagingException;
}


4、创建IEmailService接口的实现类EmailService.java 文件

package com.springboot.email.email.service.impl;


import com.springboot.email.email.service.IEmailService;
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;


import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.List;
@Service
public class EmailServiceImpl implements IEmailService {
@Resource
private JavaMailSender mailSender;


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


/**
* 发送简单文本邮件
*/
public void sendSimpleMail(String receiveEmail, String subject, String content) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(fromEmail);
message.setTo(receiveEmail);
message.setSubject(subject);
message.setText(content);
mailSender.send(message);
}
/**
* 发送Html格式的邮件
*/
public void sendHtmlMail(String receiveEmail,String subject,String emailContent) throws MessagingException
{
init(receiveEmail, subject, emailContent, mailSender, fromEmail);
}


public static void init(String receiveEmail, String subject, String emailContent, JavaMailSender mailSender, String fromEmail) throws MessagingException {
MimeMessage message= mailSender.createMimeMessage();
MimeMessageHelper helper=new MimeMessageHelper(message,true);
helper.setFrom(fromEmail);
helper.setTo(receiveEmail);
helper.setSubject(subject);
helper.setText(emailContent,true);
mailSender.send(message);
}


/**
* 发送包含附件的邮件
*/
public void sendAttachmentsMail(String receiveEmail, String subject, String emailContent, List<String> filePathList) throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
//带附件第二个参数true
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(fromEmail);
helper.setTo(receiveEmail);
helper.setSubject(subject);
helper.setText(emailContent, true);
//添加附件资源
for (String item : filePathList) {
FileSystemResource file = new FileSystemResource(new File(item));
String fileName = item.substring(item.lastIndexOf(File.separator));
helper.addAttachment(fileName, file);
}
//发送邮件
mailSender.send(message);
}
}


5、新建邮件发送模板 email.html

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8"/>
<title></title>
<style>
td {
border: black 1px solid;
}
</style>
</head>
<body>
<h1>工资条</h1>
<table style="border: black 1px solid;width: 750px">
<thead>
<td>序号</td>
<td>姓名</td>
<td>基本工资</td>
<td>在职天数</td>
<td>奖金</td>
<td>社保</td>
<td>个税</td>
<td>实际工资</td>
</thead>
<tbody>
<tr>
<td>${salary.index}</td>
<td>${salary.name}</td>
<td>${salary.baseSalary}</td>
<td>${salary.inDays}</td>
<td>${salary.reward}</td>
<td>${salary.socialSecurity}</td>
<td>${salary.tax}</td>
<td>${salary.actSalary}</td>
</tr>
</tbody>
</table>
</body>
</html>

6、新建测试类,主要代码如下

/**
* 测试简单文本文件
*/
@Test
public void EmailTest() {
emailService.sendSimpleMail("hgmyz@outlook.com", "测试邮件", "springboot 邮件测试");
}


@Test
public void HtmlEmailTest() throws MessagingException {
String receiveEmail = "hgmyz@outlook.com";
String subject = "Spring Boot 发送Html邮件测试";
String emailContent = "<h2>您好!</h2><p>这里是一封Spring Boot 发送的邮件,祝您天天开心!<img " + "src='https://p3.toutiaoimg.com/origin/tos-cn-i-qvj2lq49k0/a43f0608912a4ecfa182084e397e4b81?from=pc' width='500' height='300' /></p>" + "<a href='https://programmerblog.xyz' title='IT技术分享设社区' targer='_blank'>IT技术分享设社区</a>";
emailService.sendHtmlMail(receiveEmail, subject, emailContent);
}




@Test
public void templateEmailTest() throws IOException, TemplateException, MessagingException {
String receiveEmail = "hgmyz@outlook.com";
String subject = "Spring Boot 发送Templete邮件测试";
//添加动态数据,替换模板里面的占位符
SalaryVO salaryVO = new SalaryVO(1, "小明", 2, 9000.00, 350.06, 280.05, 350.00, 7806.00);
Template template = freeMarkerConfigurer.getConfiguration().getTemplate("email.html");
//将模板文件及数据渲染完成之后,转换为html字符串
Map<String, Object> model = new HashMap<>();
model.put("salary", salaryVO);
String templateHtml = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
emailService.sendHtmlMail(receiveEmail, subject, templateHtml);
}


@Test
public void emailContailAttachmentTest() throws IOException, TemplateException, MessagingException {
String receiveEmail = "hgmyz@outlook.com";
String subject = "Spring Boot 发送包含附件的邮件测试";
//添加动态数据,替换模板里面的占位符
SalaryVO salaryVO = new SalaryVO(1, "小王", 2, 9000.00, 350.06, 280.05, 350.00, 7806.00);
Template template = freeMarkerConfigurer.getConfiguration().getTemplate("email.html");
//将模板文件及数据渲染完成之后,转换为html字符串
Map<String, Object> model = new HashMap<>();
model.put("salary", salaryVO);
String templateHtml = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
List<String> fileList = new ArrayList<>();
fileList.add("F:\\邮件测试.docx");
fileList.add("F:\\5.png");
fileList.add("F:\\db.jpg");
emailService.sendAttachmentsMail(receiveEmail, subject, templateHtml, fileList);
}

7、效果截图

简单文版邮件

       

       

html文件

       

       

包含附件的邮件

       

       

Gitee地址:https://gitee.com/hgm1989/springboot-email.git

IT技术分享社区

个人博客网站:https://programmerblog.xyz

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Spring Boot整合邮件配置
springboot(十):邮件服务
Spring中使用FreeMaker或Vilocity模板发送邮件
springBoot整合发邮件
基于springboot的邮箱配置封装与使用
使用Spring发送邮件(一)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服