文章目录

  • 1、引入依赖:
  • 2、application.yml中配置邮件相关的参数:
  • 3、邮件service代码:
  • 4、单元测试代码:
  • 5、注意事项;

简单几步,实现在spring boot中发送邮件:

1、引入依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency>

2、application.yml中配置邮件相关的参数:

spring:mail:host: smtp.qq.comusername: zhoumin@qq.compassword: zhouminproperties:mail:smtp:auth: truestarttls:enable: truerequired: true

3、邮件service代码:

@Service
public class MailService {  private final Logger logger = LoggerFactory.getLogger(this.getClass());  @Autowired  private JavaMailSender sender;  @Value("${spring.mail.username}")  private String from;  /*** 发送纯文本的简单邮件* @param to* @param subject* @param content*/  public void sendSimpleMail(String to, String subject, String content){  SimpleMailMessage message = new SimpleMailMessage();  message.setFrom(from);  message.setTo(to);  message.setSubject(subject);  message.setText(content);  try {  sender.send(message);  logger.info("简单邮件已经发送。");  } catch (Exception e) {  logger.error("发送简单邮件时发生异常!", e);  }  }  /*** 发送html格式的邮件* @param to* @param subject* @param content*/  public void sendHtmlMail(String to, String subject, String content){  MimeMessage message = sender.createMimeMessage();  try {  //true表示需要创建一个multipart message  MimeMessageHelper helper = new MimeMessageHelper(message, true);  helper.setFrom(from);  helper.setTo(to);  helper.setSubject(subject);  helper.setText(content, true);  sender.send(message);  logger.info("html邮件已经发送。");  } catch (MessagingException e) {  logger.error("发送html邮件时发生异常!", e);  }  }  /*** 发送带附件的邮件* @param to* @param subject* @param content* @param filePath*/  public void sendAttachmentsMail(String to, String subject, String content, String filePath){  MimeMessage message = sender.createMimeMessage();  try {  //true表示需要创建一个multipart message  MimeMessageHelper helper = new MimeMessageHelper(message, true);  helper.setFrom(from);  helper.setTo(to);  helper.setSubject(subject);  helper.setText(content, true);  FileSystemResource file = new FileSystemResource(new File(filePath));  String fileName = filePath.substring(filePath.lastIndexOf(File.separator));  helper.addAttachment(fileName, file);  sender.send(message);  logger.info("带附件的邮件已经发送。");  } catch (MessagingException e) {  logger.error("发送带附件的邮件时发生异常!", e);  }  }  /*** 发送嵌入静态资源(一般是图片)的邮件* @param to* @param subject* @param content 邮件内容,需要包括一个静态资源的id,比如:<img src=\"cid:rscId01\" >* @param rscPath 静态资源路径和文件名* @param rscId 静态资源id*/  public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId){  MimeMessage message = sender.createMimeMessage();  try {  //true表示需要创建一个multipart message  MimeMessageHelper helper = new MimeMessageHelper(message, true);  helper.setFrom(from);  helper.setTo(to);  helper.setSubject(subject);  helper.setText(content, true);  FileSystemResource res = new FileSystemResource(new File(rscPath));  helper.addInline(rscId, res);  sender.send(message);  logger.info("嵌入静态资源的邮件已经发送。");  } catch (MessagingException e) {  logger.error("发送嵌入静态资源的邮件时发生异常!", e);  }  }
}

4、单元测试代码:

public class MailTests extends BasicUtClass{@Autowiredprivate MailService mailService;private String to = "xujijun@mail.cn";@Testpublic void sendSimpleMail() {mailService.sendSimpleMail(to, "主题:简单邮件", "测试邮件内容");}@AutowiredVelocityEngine velocityEngine;@Testpublic void sendHtmlMail() {Map<String, Object> model = new HashMap<String, Object>();model.put("time", XDateUtils.nowToString());model.put("message", "这是测试的内容。。。");model.put("toUserName", "张三");model.put("fromUserName", "老许");String content = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "welcome.vm", "UTF-8", model);mailService.sendHtmlMail(to, "主题:html邮件", content);}@Testpublic void sendAttachmentsMail() {mailService.sendAttachmentsMail(to, "主题:带附件的邮件", "有附件,请查收!", "C:\\Users\\Xu\\Desktop\\csdn\\1.png");}@Testpublic void sendInlineResourceMail() {String rscId = "rscId001";mailService.sendInlineResourceMail(to,"主题:嵌入静态资源的邮件","<html><body>这是有嵌入静态资源:<img src=\'cid:" + rscId + "\' ></body></html>","C:\\Users\\Xu\\Desktop\\csdn\\1.png",rscId);}
}

5、注意事项;

QQ邮箱需要开通相应权限;
设置- 帐户- POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

5、SpringBoot 发送邮件相关推荐

  1. SpringBoot 发送邮件功能实现

    背景 有个小伙伴问我你以前发邮件功能怎么弄的.然后我就给他找了个demo,正好在此也写一下,分享给大家. 理清痛点 发送邮件,大家可以想一下,坑的地方在哪? 我觉得是三个吧. 第一:邮件白名单问题. ...

  2. springboot发送邮件_SpringBoot发送邮件如何实现,SpringBoot发送邮件详解(附代码)...

    在很多的项目开发中,总会遇到消息通知的场景,比如某个广告主提交一个表单,我们要通知提醒运营人员及时查看. 消息通知的形式也有很多,比如:短信.邮件.app推送等,本文主要给大家描述一下邮件通知的形式, ...

  3. SpringBoot发送邮件(二)发送包含图片的邮件

    前言:使用发邮件这个功能不难,但是也有一些坑,下面我把开发邮件功能总结了一下分享给大家,同时为了避免篇幅过长,导致大家看的不仔细或看一半不想看了,我将这个功能细分了一下,写了好几篇供大家各取所需. S ...

  4. SpringBoot发送邮件通过SendGrid服务平台(带动态模板)

    SpringBoot发送邮件通过SendGrid服务平台 一.开通API Keys 二.后台实现 一.开通API Keys 二.后台实现 加入maven依赖 <dependency>< ...

  5. [Springboot]发送邮件、重置密码业务实战

    前言 忘记密码并通过邮件重置密码是一个常见的业务需求,在开发我的个人小项目过程中,也需要用到这个业务,今天就给大家带来一个业务实战. 开发环境 springboot:1.5.16.RELEASE 业务 ...

  6. springboot发送邮件-163邮箱

    一.获取邮箱授权码 1.以163邮箱为例,页面首部找到设置,选择SMTP 2.开启POP3/SMTP服务 3.获取授权码 二.SpringBoot集成邮件发送 1.环境配置 添加依赖 <!-- ...

  7. SpringBoot发送邮件(网易邮箱,QQ邮箱,139邮箱)

    添加依赖 <!-- 邮件服务 --> <dependency><groupId>org.springframework.boot</groupId>&l ...

  8. SpringBoot发送邮件(QQ邮箱、腾讯企业邮箱、网易邮箱、阿里云邮箱...)

    目录 一.获取邮箱授权码 二.引入依赖 三.配置文件(请注意yml格式,或者使用.properties) 四.不带附件发邮箱 五.带附件发邮箱 六.邮箱类型拓展 本篇文章以QQ邮箱作为发件人写案例演示 ...

  9. Springboot发送邮件实现注册激活

    在上一篇文章中,我们使用springboot整合邮件实现发送功能,那么下面来用邮件发送功能实现用户注册,方便我们进一步熟悉邮件发送功能的使用.实现步骤大致如下:进行用户注册同时发送一封激活邮件,邮件里 ...

  10. springboot发送邮件问题总结

    欢迎大家关注我的公众号,添加我为好友! springboot内部集成了spring的邮件发送功能,所以在使用springboot进行邮件发送的时候需要在maven中加入以下依赖. <depend ...

最新文章

  1. mysql中括号_mysql进阶知识点,启动项、系统变量、字符集介绍!
  2. pytest_01-环境准备与入门
  3. jquery 的ajax请求示例和注意事项
  4. python neo4j嵌入_Neo4j推出基于Python的嵌入式图数据存储
  5. openfeign使用_Feign使用基于配置服务发现
  6. [转载]带你玩转Visual Studio——带你高效开发
  7. Hadoop学习之路(十三)MapReduce的初识
  8. 学计算机专业能上国家电网吗,高考结束后,选择什么专业能进入国家电网?这些专业考生应该知道...
  9. swagger 接口参数顺序_Swagger常用参数用法
  10. 信号越多越好?随机相对强弱指数 vs. 相对强弱指数
  11. 二维矩阵顺时针旋转90度
  12. flash firefox linux,Linux下安装firefox的flash插件
  13. Linkedin领英如何批量撤回邀请
  14. ASR_intern_summary
  15. 520还在画玫瑰?教你用MATLAB画个玫瑰花球
  16. 决策树的ID3算法的应用
  17. 剑灵狂欢区服务器位置,9377剑灵洪门崛起6月25日部分区合服公告
  18. div居中和div内容居中
  19. Windows下Qt使用htons,htonl,ntohs,ntohl
  20. c# 生成、识别二维码

热门文章

  1. tablewidget字体显示不全_ios 容器内容显示原理及调整
  2. java查找和替换_java敏感字查找和替换
  3. 5、leetcode剑指offer53 二分查找之0~n-1缺失的数字**
  4. python 异步io_python之同步IO和异步IO
  5. hikvision v2.3控件网页demo_《快速掌握PyQt5》第三十章 网页交互QWebEngineView
  6. gbdt降低学习率可以实现正则化效果呢
  7. 逻辑回归和线性回归的区别_机器学习简介之基础理论- 线性回归、逻辑回归、神经网络...
  8. 清华大学计算机系2015分数线,清华大学2015-2017高考录取分数线,附各省录取数据...
  9. java多线程操作同一资源
  10. 百练OJ:2943:小白鼠排队