SpringBoot集成E-mail发送各种类型邮件

SpringBoot 集成 E-mail发送邮件,供大家参考,具体内容如下

JDK本身有自带发送邮件api,加上SpringBoot在进行封装,使得现在使用起来十分快速简洁。
话不多说,参考纯洁的微笑博客,更改jar版本为2.0.4 开干,基本没什么坑。
就是配置邮箱账号密码是,如果是qq邮箱,需要开启PO30和STMP服务,并且获取临时授权码。

开启服务链接:

https://mail.qq.com/cgi-bin/frame_html?sid=a5ZSbreeNm9pHyl1&r=a83225170e94773c650a460c10f7a05c

与Springboot集成

导入jar包

compile group: 'org.springframework.boot', name: 'spring-boot-starter-mail', version: '2.0.4.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-thymeleaf:2.0.4.RELEASE'

配置邮箱

#邮箱服务器地址,各大运营商不同
spring.mail.host=smtp.qq.com
#用户名
spring.mail.username=9118542413@qq.com
#密码,如果是qq的,要申请临时授权码
spring.mail.password=faw124awfawfawg
spring.mail.default-encoding=UTF-8
#以谁来发送邮件
mail.fromMail.addr=9118542413@qq.com

发送各种类型的邮件

@Service
@Slf4j
public class MailServiceImpl implements MailService {
 @Autowired
 private JavaMailSender mailSender;
 /**
  * The Template engine.
  */
 @Autowired
 TemplateEngine templateEngine;
 @Value("${mail.fromMail.addr}")
 private String from;

 @Override
 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 {
   mailSender.send(message);
   log.info("简单邮件已经发送。");
  } catch (Exception e) {
   log.error("发送简单邮件时发生异常!", e);
  }
 }

 @Override
 public void sendHtmlMail(String to, String subject, String content) {
  MimeMessage message = mailSender.createMimeMessage();

  try {
   //true表示需要创建一个multipart message
   MimeMessageHelper helper = new MimeMessageHelper(message, true);
   helper.setFrom(from);
   helper.setTo(to);
   helper.setSubject(subject);
   helper.setText(content, true);
   mailSender.send(message);
   log.info("html邮件发送成功");
  } catch (MessagingException e) {
   log.error("发送html邮件时发生异常!", e);
  }
 }

 @Override
 public void sendAttachmentsMail(String to, String subject, String content, String filePath) {
  MimeMessage message = mailSender.createMimeMessage();
  try {
   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) + 1);
   helper.addAttachment(fileName, file);

   mailSender.send(message);
   log.info("带附件的邮件已经发送。");
  } catch (MessagingException e) {
   log.error("发送带附件的邮件时发生异常!", e);
  }
 }

 @Override
 public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId) {
  MimeMessage message = mailSender.createMimeMessage();
  try {
   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);

   mailSender.send(message);
   log.info("嵌入静态资源的邮件已经发送。");
  } catch (MessagingException e) {
   log.error("发送嵌入静态资源的邮件时发生异常!", e);
  }
 }

 @Override
 public void sendTemplateMail(String to, String subject, String template, Context context) {
  String emailContent = templateEngine.process(template, context);
  sendHtmlMail("15017263512@163.com", "主题:这是模板邮件", emailContent);
 }
}

测试类:

@RunWith(SpringRunner.class)
@SpringBootTest
public class EmailServiceTest {
 @Autowired
 MailService mailService;

 @Test
 public void sendSimpleMailTest() {
  mailService.sendSimpleMail("15017263512@163.com","test simple mail"," hello this is simple mail");
 }

 @Test
 public void sendHtmlMailTest(){
  String content="<html>\n" +
    "<body>\n" +
    " <h3>hello world ! 这是一封Html邮件!</h3>\n" +
    "</body>\n" +
    "</html>";
  mailService.sendHtmlMail("15017263512@163.com","test html mail",content);
 }

 @Test
 public void sendAttachmentsMail(){
  String filePath="E:\\var\\log\\elkTest\\error\\2018-11-30.log";
  mailService.sendAttachmentsMail("15017263512@163.com", "主题:带附件的邮件", "有附件,请查收!", filePath);
 }

 @Test
 public void sendInlineResourceMail() {
  String rscId = "neo006";
  String content="<html><body>这是有图片的邮件:<img src=\'cid:" + rscId + "\' ></body></html>";
  String imgPath = "C:\\Users\\Admin\\Pictures\\Camera Roll\\9499189867_1476052069.jpg";

  mailService.sendInlineResourceMail("15017263512@163.com", "主题:这是有图片的邮件", content, imgPath, rscId);
 }

 @Test
 public void sendTemplateMail() {
  //创建邮件正文
  Context context = new Context();
  context.setVariable("id", "006");
  mailService.sendTemplateMail("15017263512@163.com","主题:这是模板邮件",
    "emailTemplate",context);
 }
}

上面的邮箱和密码是我乱填的,注意自己更改。

项目源码以上传至GitHub

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • springboot整合freemarker详解

    前提: 开发工具:idea 框架:spring boot.maven 1.pom文件添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> <version>1.4.1.RELEASE</version> </dependency>

  • SpringBoot JavaMailSender发送邮件功能

    本文实例为大家分享了SpringBoot JavaMailSender发送邮件的具体代码,供大家参考,具体内容如下 引入Maven依赖包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 163邮箱 application.properties

  • SpringBoot使用FreeMarker模板发送邮件

    本文实例为大家分享了SpringBoot +Mail+FreeMarker发送邮件,供大家参考,具体内容如下 通过spirngboot 自带的mail服务及FreeMarker模板引擎,发送邮 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </depen

  • SpringBoot中发送QQ邮件功能的实现代码

    本文是vhr系列的第十二篇,项目地址 https://github.com/lenve/vhr 邮件发送也是一个老生常谈的问题了,代码虽然简单,但是许多小伙伴对过程不太理解,所以还是打算和各位小伙伴聊聊这个话题. 邮件协议 我们经常会听到各种各样的邮件协议,比如SMTP.POP3.IMAP,那么这些协议有什么作用,有什么区别?我们先来讨论一下这个问题. SMTP是一个基于TCP/IP的应用层协议,江湖地位有点类似于HTTP,SMTP服务器默认监听的端口号为25.看到这里,小伙伴们可能会想到既然S

  • springboot实现添加邮件发送及压缩功能

    这次本来只讲讲邮件发送功能的,惮于内容比较贫乏,故加了点儿文件压缩的功能讲解. 首先邮件发送,邮件功能在springboot里面是有对应的依赖组件,这个: <dependency> <groupId>org.springframework.boot</groupId> <artifactId> spring-boot-starter-mail</artifactId> </dependency> 邮件功能开发在springboot里面

  • SpringBoot集成E-mail发送各种类型邮件

    SpringBoot 集成 E-mail发送邮件,供大家参考,具体内容如下 JDK本身有自带发送邮件api,加上SpringBoot在进行封装,使得现在使用起来十分快速简洁. 话不多说,参考纯洁的微笑博客,更改jar版本为2.0.4 开干,基本没什么坑. 就是配置邮箱账号密码是,如果是qq邮箱,需要开启PO30和STMP服务,并且获取临时授权码. 开启服务链接: https://mail.qq.com/cgi-bin/frame_html?sid=a5ZSbreeNm9pHyl1&r=a8322

  • php使用SAE原生Mail类实现各种类型邮件发送的方法

    本文实例讲述了php使用SAE原生Mail类实现各种类型邮件发送的方法.分享给大家供大家参考,具体如下: 用过SAE的都知道,SAE所有服务中,就数Mail服务最不行了,时不时邮件就发不出去.特别是企业邮局,连新浪自家的企业邮局都出问题.今天就给出解决方案. 先来看看SAE文档中给出的DEMO: $mail = new SaeMail(); $mail->setAttach( array( 'my_photo' => '照片的二进制数据' ) );//附件发送方法 $ret = $mail-&

  • SpringBoot 集成短信和邮件的配置示例详解

    目录 依赖 配置 编码 1.邮件 2.短信 准备工作 1.集成邮件 以QQ邮箱为例 在发送邮件之前,要开启POP3和SMTP协议,需要获得邮件服务器的授权码,获取授权码: 1.设置>账户 在账户的下面有一个开启SMTP协议的开关并进行密码验证: 2.获取成功的授权码 2.集成短信 以阿里云短信服务为例 1.登陆阿里云—>进入控制台—>开通短信服务 进入后根据提示开通短信服务即可. 2.充值 后期发短信测试需要,暂时可以跳过此步骤. 3.获取AccessKey和AccessSercet 文

  • 使用spring mail发送html邮件的示例代码

    序 本文展示一下如何使用spring mail来发送html邮件. maven <!-- email --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 发送图片 public void send(String from, St

  • SpringBoot集成RocketMQ发送事务消息的原理解析

    目录 简介 原理 具体实现 消费者 消费者 生产者消息监听器 消息事务测试 正常测试 异常测试 代码调整 执行结果 总结 简介 RocketMQ 事务消息(Transactional Message)是指应用本地事务和发送消息操作可以被定义到全局事务中,要么同时成功,要么同时失败.RocketMQ 的事务消息提供类似 X/Open XA 的分布事务功能,通过事务消息能达到分布式事务的最终一致. 原理 RocketMQ事务消息通过异步确保方式,保证事务的最终一致性.设计的思想可以借鉴两个阶段提交事

  • springboot整合redis实现发送邮箱并验证

    目录 1.起步 2.工具类 邮箱工具类 redis乱码解决 3.controller搭建 4.前端搭建 结果 总结 1.起步 pom文件 <!--集成redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> <version>1.4.1.RELEAS

  • Springboot整合RabbitMQ实现发送验证码的示例代码

    目录 1. RabbitMQ的介绍 2. 搭建环境 2.1引入jar包 2.2生产者配置 2.2.1Rabbit配置类 2.2.2 application.yml文件配置 2.3消费者配置 2.3.1 消费者配置类(同生产者) 2.3.2 application.yml文件配置 3.写发送短信验证码的代码 3.1写一个controller来调用发送验证码的接口 3.2 生成验证码 3.3发送短信验证码 3.4 实现验证码的校对 1. RabbitMQ的介绍 MQ全称为Message Queue,

  • SpringBoot实现发送邮件、发送微信公众号推送功能

    目录 SpringBoot实现发送邮件 pom.xml application.yml 代码实现 SpringBoot实现发送微信公众号推送 pom.xml 代码实现 SpringBoot实现发送邮件   JavaMailSender是Spring封装的邮件发送封装类,支持普通文本.附件.html等格式. pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>

  • php实现的发送带附件邮件类实例

    本文实例讲述了php实现的发送带附件邮件类的方法,是一个非常实用的功能.分享给大家供大家参考.具体方法如下: emailclass.php类文件如下: <? class CMailFile { var $subject; var $addr_to; var $text_body; var $text_encoded; var $mime_headers; var $mime_boundary = "--==================_846811060==_"; var $

  • Python3使用SMTP发送带附件邮件

    一.设置开启SMTP服务并获取授权码 可以参考第一篇文章,这里不再赘述:[一]https://www.jb51.net/article/142220.htm 二.使用Python3 发送带附件的邮件 0.使用的环境为: Python 3.6.3 (64bit) PyCharm 2017.3 (64bit) 1.注意事项: 在调用smtplib,发送简单邮件的时候使用smtplib.SMTP()方法使没有问题的. 但是如果是邮件存在附件的情况下,还使用smtplib.SMTP()方法,就可能会发送

随机推荐