1. pom.xml文件中引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2. 接口及实现类
2.1 接口
复制代码
package com.yuhuashang.demo.mail;
/**
* @Author:
* @Date: 2018/12/5 15:28
* @Description: 邮件服务的接口
*/
public interface MailService {
public void sendSimpleMail(String to, String subject, String content);
}
复制代码
2.2 实现类
复制代码
package com.yuhuashang.demo.mail.impl;
import com.yuhuashang.demo.mail.MailService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;
/**
* @Author:
* @Date: 2018/12/5 15:23
* @Description: 邮件服务的实现类
*/
@Component
public class MailServiceImpl implements MailService{
private final Logger logger = (Logger)
LoggerFactory.getLogger(this.getClass());
@Autowired
private JavaMailSender mailSender;
@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);
logger.info("简单邮件已经发送。");
}catch (Exception e) {
logger.error("发送简单邮件时发生异常!", e);
}
}
}
复制代码
3. application.properties的配置
复制代码
# 发送一方邮件信息
mail.fromMail.addr=XXXXX
spring.mail.host=XXXXX
spring.mail.password=XXXXX
spring.mail.properties.smtp.auth=true
spring.mail.properties.smtp.timeout=25000
spring.mail.username=XXXXXX
复制代码
4. 常用邮箱的配置
4.1 QQ个人邮箱
复制代码
# 利用QQ个人邮箱发送邮件
mail.fromMail.addr=XXXXXX@qq.com
spring.mail.host=smtp.qq.com
spring.mail.password=XXXXXXX // 授权密码,非登录密码
spring.mail.properties.smtp.auth=true
spring.mail.properties.smtp.timeout=25000
spring.mail.username=XXXXXXXX@qq.com
复制代码
注意: spring.mail.password使用的开启stmp时,QQ给的授权码,目前需要发送短信开启。
4.2 163个人邮箱
复制代码
# 利用163个人邮箱发送邮件
mail.fromMail.addr=XXXXXX@163.com
spring.mail.host=smtp.163.com
spring.mail.password=XXXXXXX // 授权密码,非登录密码
spring.mail.properties.smtp.auth=true
spring.mail.properties.smtp.timeout=25000
spring.mail.username=XXXXXXX@163.com
复制代码
注意: spring.mail.password使用的开启stmp时,163的授权码,目前需要自己设定。
4.3 阿里云个人邮箱
复制代码
# 利用aliyun个人邮箱发送
mail.fromMail.addr=XXXXXX@aliyun.com
spring.mail.host=smtp.aliyun.com
spring.mail.password=XXXXXX // 默认开启,填登陆密码即可
spring.mail.properties.smtp.auth=true
spring.mail.properties.smtp.timeout=25000
spring.mail.username=XXXXXXX@aliyun.com
复制代码
注意: spring.mail.password使用的是登陆密码,阿里云的stmp默认开启的,我在邮箱上没有发现可以开启或关闭的地方,自己用的登陆密码试过,是可以用的。
4.4 QQ企业邮箱
复制代码
# 利用QQ企业邮箱发送邮件
mail.fromMail.addr=XXXXXX@xx.com
spring.mail.host=smtp.www.quwanyule157.com exmail.qq.com
spring.mail.password=XXXXXXX // 授权密码,非登录密码
spring.mail.www.dfgjpt.com properties.smtp.auth=true
spring.mail.properties.smtp.timeout=25000
spring.mail.username=XXXXXXXX@xx.com
复制代码
注意: spring.mail.password使用的是授权码,非登陆密码,最近没有用QQ企业邮箱,之前实现过,目前应该是这样的。
4.5 163企业邮箱
复制代码
# 利用163企业邮箱发送邮件
mail.fromMail.addr=XXXXXX@XXX.com
spring.mail.host=smtp.qiye.163.com
spring.mail.password=XXXXXXX // 授权密码,非登录密码
spring.mail.properties.smtp.auth=true
spring.mail.properties www.mhylpt.com.smtp.www.gcyL157.com timeout=25000
spring.mail.username=XXXXXX@XXX.com
复制代码
注意: spring.mail.password使用的是授权码,非登陆密码,由于没有使用过163企业邮箱,故不能保证可用性,如果有用过的朋友,可以给个中肯的答案。
4.6 阿里云企业邮箱
复制代码
# 利用aliyun企业邮箱发送
mail.fromMail.addr=XXXXXXXX@XXX.com
spring.mail.host=smtp.mxhichina.com
spring.mail.password=XXXXX // 默认开启,填登陆密码即可
spring.mail.properties.smtp.auth=true
spring.mail.properties.smtp.timeout=25000
spring.mail.username=XXXXXX@XXX.com
复制代码
注意: spring.mail.password使用的是登陆密码,目前正使用阿里云企业邮箱,自己亲自测试过,目前是可以用的,填登陆密码即可。
分类: Spring-Boot系列,Java常用功能总结
© 著作权归作者所有
举报
打赏
0 赞
2 收藏
分享
加载中

其他人还在看
这是Windows DHCP最佳实践和技巧的最终指南。 如果您有任何最佳做法或技巧,请在下面的评论中发布它们。 在本指南(一)中,我将分享以下DHCP最佳实践和技巧。 不要将DHCP放在您的域控制器上 使用DHCP故障转移 中...
你好,我是A哥(YourBatman)。 日期/时间的处理是平时开发中非常常见的场景,若只是简单的格式化场景那就还好,一旦涉及到时区、跨地域跨时区时间转换场景,甚至当还有GMT时间、UTC时间等一堆概念堆上来的时候,总...
我是架构精进之路,点击上方“关注”,坚持每天为你分享技术干货,私信我回复“01”,送你一份程序员成长进阶大礼包。 面试常见的四种算法思想,全在这里了,今天带你一文了解。 1、贪心 贪心算法有很多经典的应用...
前言 ”面向接口编程“写 Java 的朋友耳朵已经可以听出干茧了吧,当然这个思想在 Java 中非常重要,甚至几乎所有的编程语言都需要,毕竟程序具有良好的扩展性、维护性谁都不能拒绝。 最近无意间看到了我刚开始写 ...
以下文章来源于公众号 「iconfontplus」 ,作者前端快爆 2020 终究是一个不平凡的一年,我们经历了太多坎坷与磨炼。甚至受 COVID-19 疫情的影响,Chrome 浏览器罕见的断更了,Chrome 82 就此缺席。但 Web 生态依旧...
在前端js中,this虽然只是其中的一个关键字而已,但是确实一个比较特殊的关键字。为什么说this在js关键字中很特殊呢,原因就在于this是函数在运行时自动生成的一个对象,this的指向在函数定义的时候不是确定的,只...
作者 | 张磊 来源|阿里巴巴云原生公众号 2020 年注定是不凡的。它在阴霾中开始,在惊叹中结束,也让未来变得更加扑朔迷离。那么,容器与云原生的 2020 年呢?你是否记得它是怎样开始的?它又将走向何方? Kubern...
一般情况下技术岗面试都需要经历面试和笔试部分,面试过程中主要采用问答的形式,一般没有完全固定的回答,主要是根据自己的工作经验应答面试官的问题,而笔试部分更注重基础知识以及问题的常规解决方案。下面IT技...
生产者消费者模式最核心的部分是生产者与消费者之间的特殊容器,而阻塞队列是特殊容器最常见的实现。JDK中定义了阻塞队列接口BlockingQueue,JDK通过该接口为我们提供了很多种阻塞队列的实现,其中包括本节的主角...
接着前几天的两篇文章,继续解析JVM面试问题,送给年后想要跳槽的小伙伴 万万没想到,面试中,连 ClassLoader类加载器 也能问出这么多问题..... 万万没想到,JVM内存区域的面试题也可以问的这么难? 三、GC垃圾回...
选择专区和圈子:{{title}}
{{o.name}}
{{m.name}}