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

      Java技术:SpringBoot实现邮件发送功能_第1张图片        

目录

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

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

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

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

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

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

7、效果截图


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

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

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



org.springframework.boot
spring-boot-starter-mail



org.springframework.boot
spring-boot-starter-freemarker

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

spring:
mail:
host: smtp.qq.com
username: [email protected]  #发件人邮箱
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 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 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




    
    
    


工资条

序号 姓名 基本工资 在职天数 奖金 社保 个税 实际工资
${salary.index} ${salary.name} ${salary.baseSalary} ${salary.inDays} ${salary.reward} ${salary.socialSecurity} ${salary.tax} ${salary.actSalary}

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

/**
 * 测试简单文本文件
 */
@Test
public void EmailTest() {
    emailService.sendSimpleMail("[email protected]", "测试邮件", "springboot 邮件测试");
}


@Test
public void HtmlEmailTest() throws MessagingException {
    String receiveEmail = "[email protected]";
    String subject = "Spring Boot 发送Html邮件测试";
    String emailContent = "

您好!

这里是一封Spring Boot 发送的邮件,祝您天天开心!

" + "IT技术分享设社区"; emailService.sendHtmlMail(receiveEmail, subject, emailContent); } @Test public void templateEmailTest() throws IOException, TemplateException, MessagingException { String receiveEmail = "[email protected]"; 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 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 = "[email protected]"; 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 model = new HashMap<>(); model.put("salary", salaryVO); String templateHtml = FreeMarkerTemplateUtils.processTemplateIntoString(template, model); List fileList = new ArrayList<>(); fileList.add("F:\\邮件测试.docx"); fileList.add("F:\\5.png"); fileList.add("F:\\db.jpg"); emailService.sendAttachmentsMail(receiveEmail, subject, templateHtml, fileList); }

7、效果截图

简单文版邮件

       Java技术:SpringBoot实现邮件发送功能_第2张图片        

html文件

       Java技术:SpringBoot实现邮件发送功能_第3张图片        

包含附件的邮件

       Java技术:SpringBoot实现邮件发送功能_第4张图片        

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

你可能感兴趣的:(spring,boot,spring,boot,java)