1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Java技术:SpringBoot实现邮件发送功能

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

时间:2018-11-04 07:21:52

相关推荐

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: username: xxx@ #发件人邮箱password: xxxxx #授权码protocol: smtpproperties.mail.smtp.auth:trueproperties.mail.smtp.port:465#发件邮箱端口properties.mail.display.sendmail: xiaoMingproperties.mail.display.sendname: xiaomingproperties.mail.smtp.starttls.enable:trueproperties.mail.smtp.starttls.required:trueproperties.mail.smtp.ssl.enable:true#是否启用ssldefault-encoding: utf-8#编码格式 freemarker:cache:falsesettings:classic_compatible:truesuffix: .htmlcharset: UTF-8template-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;@Servicepublic class EmailServiceImpl implements IEmailService {@Resourceprivate 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();//带附件第二个参数trueMimeMessageHelper 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、新建测试类,主要代码如下

/*** 测试简单文本文件*/@Testpublic void EmailTest() {emailService.sendSimpleMail("hgmyz@", "测试邮件", "springboot 邮件测试");}@Testpublic void HtmlEmailTest() throws MessagingException {String receiveEmail = "hgmyz@";String subject = "Spring Boot 发送Html邮件测试";String emailContent = "<h2>您好!</h2><p>这里是一封Spring Boot 发送的邮件,祝您天天开心!<img " + "src='/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);}@Testpublic void templateEmailTest() throws IOException, TemplateException, MessagingException {String receiveEmail = "hgmyz@";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);}@Testpublic void emailContailAttachmentTest() throws IOException, TemplateException, MessagingException {String receiveEmail = "hgmyz@";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地址:/hgm1989/springboot-email.git

IT技术分享社区

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

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。