springboot服务接口调用记录:Java技术 SpringBoot实现邮件发送功能
springboot服务接口调用记录:Java技术 SpringBoot实现邮件发送功能包含附件的邮件Gitee地址:https://gitee.com/hgm1989/springboot-email.git

邮件发送功能基本是每个完整业务系统要集成的功能之一,今天小编给大家介绍一下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.jpg");
    fileList.add("F:\\db.jpg");
    emailService.sendAttachmentsMail(receiveEmail  subject  templateHtml  fileList);
}
7、效果截图
    
简单文版邮件

html文件

包含附件的邮件

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




