Spring Boot笔记(二) springboot 集成 SMTP 发送邮件
个人博客网: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;
    }
发送成功:

收到的邮件:

Spring Boot笔记(二) springboot 集成 SMTP 发送邮件的更多相关文章
- Spring Boot笔记(三) springboot 集成 Quartz 定时任务
		
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1. 在 pom.xml 中 添加 Quartz 所需要 的 依赖 <!--定时器 quartz- ...
 - Spring Boot笔记(一) springboot 集成 swagger-ui
		
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.添加依赖 <!--SpringBoot整合Swagger-ui--> <depen ...
 - Spring Boot笔记(六) springboot 集成 timer 定时任务
		
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.创建具体要执行的任务类: package com.example.poiutis.timer; im ...
 - Spring Boot笔记(五) SpringBoot 集成Lombok 插件
		
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 为了减少代码量,为当前项目添加 lombok 来优雅编码 Lombok 插件安装: a . 添加依赖: ...
 - Spring Boot (二)集成Jsp与生产环境部署
		
一.简介 提起Java不得不说的一个开发场景就是Web开发,也是Java最热门的开发场景之一,说到Web开发绕不开的一个技术就是JSP,因为目前市面上仍有很多的公司在使用JSP,所以本文就来介绍一下S ...
 - Spring Boot笔记二:快速创建以及yml文件自动注入
		
上个笔记写了如何自己去创建Spring boot,以及如何去打jar包,其实,还是有些麻烦的,我们还自己新建了几个文件夹不是. Idea可以让我们快速的去创建Spring boot应用,来看 一.快速 ...
 - Spring Boot实战二:集成Mybatis
		
Spring Boot集成Mybatis非常简单,在之前搭建好的项目中加入Mybatis依赖的jar,在配置文件中加入数据库配置即可,如下图所示: 创建对应的Controller.Service.Da ...
 - Spring Boot(十二):spring boot如何测试打包部署
		
Spring Boot(十二):spring boot如何测试打包部署 一.开发阶段 1,单元测试 在开发阶段的时候最重要的是单元测试了,springboot对单元测试的支持已经很完善了. (1)在p ...
 - spring boot / cloud (二) 规范响应格式以及统一异常处理
		
spring boot / cloud (二) 规范响应格式以及统一异常处理 前言 为什么规范响应格式? 我认为,采用预先约定好的数据格式,将返回数据(无论是正常的还是异常的)规范起来,有助于提高团队 ...
 
随机推荐
- spring学习笔记(七)HttpMessageConverter
			
spring学习笔记(七)HttpMessageConverter 1. HttpMessageConverter的加载 2. 从StringMessageConverter探究消息转换器的原理 1. ...
 - apache反向代理和负载均衡
			
正向代理:正如我们用的游戏加速代理,大多的个人PC把请求发给正向代理服务器,代理服务器通常配置高端的带宽,替我们请求相应的服务 负载均衡中的反向代理:通常意义上,是一个请求转发的代理.类似一个收发室的 ...
 - mysql数据库如何修改密码及权限分配
			
如何修改Mysql密码 Mysql用户密码采用md5加密函数加密(单向加密) SELECT PASSWORD('root'); -- *81F5E21E35407D884A6CD4A731AEBFB6 ...
 - redis主从复制、主从延迟知几何
			
本片章节主要从 redis 主从复制延迟相关知识及影响因素做简要论述. 1.配置:repl-disable-tcp-nodelay 也即是TCP 的 TCP_NODELAY 属性,决定数据的发送时机. ...
 - 关于Tomcat+Nginx负载均衡与Jmeter服务器测压的日记
			
Jmeter测压 1.Jmeter-5.1.1下载:http://mirror.bit.edu.cn/apache//jmeter/binaries/apache-jmeter-5.1.1.zip 2 ...
 - yield与park的区别
			
yield表示放弃本次cpu的时间片,但是操作系统在下一个时间片依旧可能会调用该线程/进程 park表示线程/进程睡眠,需要让其他线程/进程唤醒,才有可能重新被操作系统分配时间片, 非自旋锁,底层一般 ...
 - react+express实现跨域
			
1. 首先复习一下跨域的几种主要方式: a. jsonp b. cors c. 代理服务(开发环境下常用) 2. 代理服务器:可实现转发请求.即浏览器在3000端口发出请求,通过代理转发,将请求发送给 ...
 - React:Composition
			
在日常的UI构建中,经常会遇到一种情况:组件本身更多是作为一个容器,它所包含的内容可能是动态的.未预先定义的.这时候它的内容取决另一个组件或外部的输入.比如弹层. props.children: Re ...
 - DPDK 无锁队列Ring Library原理(学习笔记)
			
参考自DPDK官方文档原文:http://doc.dpdk.org/guides-20.02/prog_guide/ring_lib.html 针对自己的理解做了一些辅助解释. 1 前置知识 1.1 ...
 - 王艳 201771010127《面向对象程序设计(java)》第十周学习总结
			
一:理论部分. 1.泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用. 1)泛型(参数化类型):在定义类.接口和方法时,通过类型参数指示将要处理的对象类型.如ArrayList类是一个泛型程 ...