个人博客网:https://wushaopei.github.io/    (你想要这里多有)

笔记:乘着项目迭代的间隙,把一些可复用的功能从项目中抽取出来,这是其中之一,

一、添加SMTP 及 MAIL 的 pom.xml 依赖

               <!--郵箱發送-->

		<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

注意: 依赖添加后会要求刷新 springBootConguration 的配置信息,可执行也可不理睬

具体操作如下:

二、配置yml邮箱参数

1、在 application-dev.yml中配置对应的邮箱参数


#邮件配置
email:
host: smtp.163.com
username: 1598974689@163.com
password: 1598974689wsp
senderName: 1598974689@163.com #发送提醒邮件的接收方
sendToMail: 1862030785@foxmail.com
sendToPeopleName: wen

2、由于是使用SMTP实现邮箱发送,除了提供必要的邮箱、密码等参数外,还要开启邮箱账号的 SMTP 设置,

打勾选中要设置的服务项,通过校验短信息设置授权码,使用授权码代替  邮箱密码 实现邮件的发送,流程很简单的。

三、相关工具类和 实体类的创建

1、邮箱 参数 config

package com.example.poiutis.model.common;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource; /**
* @ClassName EmailConfig
* @Description TODO
* @Author wushaopei
* @Date 2019/7/25 10:24
* @Version 1.0
*/
@Configuration
@ConfigurationProperties(prefix = "email", ignoreUnknownFields = false)
//@PropertySource("classpath:/application.yml")
public class EmailConfig {
private String host;
private String username;
private String password;
private String senderName; public String getHost() {
return host;
} public void setHost(String host) {
this.host = host;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getSenderName() {
return senderName;
} public void setSenderName(String senderName) {
this.senderName = senderName;
} @Override
public String toString() {
return "EmailConfig{" +
"host='" + host + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
", senderName='" + senderName + '\'' +
'}';
}
}

2、 Email 发送实现工具类

package com.example.poiutis.utils.Email;
import com.example.poiutis.model.common.EmailConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component; import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Properties; /**
* @ClassName MailSenderFacade
* @Description TODO
* @Author wushaopei
* @Date 2019/7/25 10:22
* @Version 1.0
*/
@Component
public class MailSenderFacade { @Autowired
private EmailConfig emailConfig; private final Logger logger = LoggerFactory.getLogger(MailSenderFacade.class); public void sendMailHtml(final String toEmail,final String subject,final String text){
try{
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setUsername(emailConfig.getUsername());
javaMailSender.setPassword(emailConfig.getPassword());
javaMailSender.setHost(emailConfig.getHost());
javaMailSender.setPort(25);
javaMailSender.setProtocol("smtp");
javaMailSender.setDefaultEncoding("UTF-8");
Properties mailProperties = new Properties();
mailProperties.put("mail.smtp.auth", true);
mailProperties.put("mail.smtp.starttls.enable", true);
javaMailSender.setJavaMailProperties(mailProperties);
MimeMessage mimeMessage = getMimeMessage(toEmail,subject,text, javaMailSender);
javaMailSender.send(mimeMessage);
logger.info("发往 "+toEmail+" 邮件发送成功");
} catch (MessagingException e) {
logger.error("发往 "+toEmail+" 邮件发送异常", e);
}
} private MimeMessage getMimeMessage(String toEmail,String subject,String text, JavaMailSenderImpl javaMailSender) throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
mimeMessageHelper.setFrom(emailConfig.getSenderName());
mimeMessageHelper.setTo(toEmail);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(text, true);
return mimeMessage;
}
}

四、测试SMTP功能发送一个邮件试试

 @RequestMapping(value = "/please/emailTest", method = RequestMethod.GET)
public Object getEmailTest() {
Map<String,Object> map = null;
try{
map = new HashMap<>();
mailSenderFacade.sendMailHtml("18620307785@163.com", "来自邮箱测试接口邮件", "来自邮箱测试接口邮件");
map.put("state","0");
map.put("message", "导出成功"); }catch (Exception e){
map.put("state","1");
map.put("message", "导出失敗");
e.printStackTrace();
}
return map;
}

发送成功:

收到的邮件:

GitHub

Spring Boot笔记(二) springboot 集成 SMTP 发送邮件的更多相关文章

  1. Spring Boot笔记(三) springboot 集成 Quartz 定时任务

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1. 在 pom.xml 中 添加 Quartz 所需要 的 依赖 <!--定时器 quartz- ...

  2. Spring Boot笔记(一) springboot 集成 swagger-ui

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.添加依赖 <!--SpringBoot整合Swagger-ui--> <depen ...

  3. Spring Boot笔记(六) springboot 集成 timer 定时任务

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.创建具体要执行的任务类: package com.example.poiutis.timer; im ...

  4. Spring Boot笔记(五) SpringBoot 集成Lombok 插件

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 为了减少代码量,为当前项目添加 lombok 来优雅编码 Lombok 插件安装: a . 添加依赖: ...

  5. Spring Boot (二)集成Jsp与生产环境部署

    一.简介 提起Java不得不说的一个开发场景就是Web开发,也是Java最热门的开发场景之一,说到Web开发绕不开的一个技术就是JSP,因为目前市面上仍有很多的公司在使用JSP,所以本文就来介绍一下S ...

  6. Spring Boot笔记二:快速创建以及yml文件自动注入

    上个笔记写了如何自己去创建Spring boot,以及如何去打jar包,其实,还是有些麻烦的,我们还自己新建了几个文件夹不是. Idea可以让我们快速的去创建Spring boot应用,来看 一.快速 ...

  7. Spring Boot实战二:集成Mybatis

    Spring Boot集成Mybatis非常简单,在之前搭建好的项目中加入Mybatis依赖的jar,在配置文件中加入数据库配置即可,如下图所示: 创建对应的Controller.Service.Da ...

  8. Spring Boot(十二):spring boot如何测试打包部署

    Spring Boot(十二):spring boot如何测试打包部署 一.开发阶段 1,单元测试 在开发阶段的时候最重要的是单元测试了,springboot对单元测试的支持已经很完善了. (1)在p ...

  9. spring boot / cloud (二) 规范响应格式以及统一异常处理

    spring boot / cloud (二) 规范响应格式以及统一异常处理 前言 为什么规范响应格式? 我认为,采用预先约定好的数据格式,将返回数据(无论是正常的还是异常的)规范起来,有助于提高团队 ...

随机推荐

  1. Spring官网阅读(十八)Spring中的AOP

    文章目录 什么是AOP AOP中的核心概念 切面 连接点 通知 切点 引入 目标对象 代理对象 织入 Spring中如何使用AOP 1.开启AOP 2.申明切面 3.申明切点 切点表达式 excecu ...

  2. salesforce零基础学习(九十七)Event / Task 针对WhoId的浅谈

    我们在Sales Cloud中经常会创建顾客,如果针对TO C业务,会启用个人顾客,比如针对车企行业,有一些场景是需要卖给个人的,而不只是企业采购.当通过打电话或者其他的场景有潜在客户并且转换成客户以 ...

  3. C++11之STL多线程

    STL库跨平台: VS2010不支持std::thread库,至少VS2012/2013及其以上可以: 一.库概要 (1)std::thread成员函数 thread(fun, args...); / ...

  4. 【Spark】快来学习RDD的创建以及操作方式吧!

    目录 RDD的创建 三种方式 从一个集合中创建 从文件中创建 从其他的RDD转化而来 RDD编程常用API 算子分类 Transformation 概述 帮助文档 常用Transformation表 ...

  5. STM32F767ZI NUCLEO144 基于CubeIDE快速开发入门指南

    刚入手的NUCLEO-F767ZI:整合官网资源,理清思路,便于快速进行快发: 文章目录 1 NUCLEO 系列 2 NUCLEO-F767ZI 3 环境搭建 3.1 Keil/IAR安装 3.2 C ...

  6. 3-JVM垃圾回收算法和垃圾收集器

    垃圾回收算法和垃圾收集器 1.什么是垃圾回收 对于内存当中无用的对象进行回收,如何去判断一个对象是不是无用的对象. 引用计数法: 每个对象中都会存储一个引用计数,每增加一个引用就+1,消失一个引用就- ...

  7. JDBC10 Blob二进制对象

    //将图片输入到数据库中 // String sql="insert into t_user2 (username,headImg) values (?,?)"; // ps=co ...

  8. 设计模式之GOF23策略

    策略模式strategy 场景:对不同客户的不同报价策略 如果采用if else不易扩展,不符合开闭原则,可以采用策略模式 策略模式: 对应于解决某一个问题的算法族,允许其中一个算法去解决某一问题,同 ...

  9. [hdu4801]搜索

    http://acm.hdu.edu.cn/showproblem.php?pid=4801 状态和生成状态的过程处理好了,这个题就是简单的搜索题了== #include <iostream&g ...

  10. [hdu4123]dfs区间化+RMQ

    题意:给一个树编号0~n-1,一个数组a[i]为节点i在树上走的最大距离(不重复点),然后求最大的区间,使得区间最大差异小于某个值.dfs求出每个数组,同时区间化.枚举区间左边界,右边界同样递增,类似 ...