开发者学堂课程【SpringBoot 实战教程: SpringBoot 整合 Mail】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/651/detail/10805
SpringBoot 整合 Mail
1、首先需要做和邮件相关的架包的依赖,springboot 提供的,把它放进工程中,创建好工程,做好 web 依赖。
<!--邮件依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2、进行相关属性的配置,需要指明用哪个邮件服务器进行发送,把以下代码拷贝到全局配置文件中。
#JavaMailSender 邮件发送的配置
spring.mail.host=smtp.qq.com
这是qq的 #smtp.163.com
163
改成这个
spring.mail.username=465008297@qq.com
spring.mail.password=cjmegwewmbiqcach
#如果使用 qq 邮箱,password 是授权码,如果是163,password 就是邮箱的密码
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
#若使用QQ邮箱发送邮件,则需要修改为spring.mail.host=smtp.qq.com
,同时 spring.mail.pass word
改为 QQ 邮箱的授权码。#QQ 邮箱->设置->账户->POP3/SMTP 服务:开启服务后会获得 QQ 的授权码
出现认证失败的解决方案,因为 JDK1.8中 jre\lib\security 中两个 jar 包替换的缘故。将下载后的 local_policy.jar 和 US_export_policy.jar 替换到 JDK1.8的jre\lib\security 文件夹即可。
3、创建包,com.qianteng.email。
写一个类读取发件人,获取到发件人的邮箱 EmailConfig。
package com. qianfeng. email;
@Component
用注解创建对象
public class EmailConfig
{
@Value (
‘
'$
{
spring .mail . username
}’’)
用注解取到值,取一个值是因为发件人的邮箱经常用,单独取一下即可。从配置文件中取到的属性名的值就配给它。
Private
String
eamil From;
发件人
Public
String getEmailFrom()
{
生成 set,get 方法
return email From
;
}
public void setEmailFrom (String email From)
{
this . emailFrom = email From;
}
4、发送邮件功能写相应的 service 和 controller,写在一个包下,创建一个接口 EmailService。
//发送简单的邮件,邮件的内容都是文本
void sendS impleMail (String
sendTo, string title, String
content) ;
发给谁,发送的标题,发送邮件的内容是变化的。
5、写实现类,EmailServicelmpl,实现创建的接口。
加 service 注解,可以从 EmailConfig 的到发件人的邮箱,
@Service
public class Email ServiceImpl implements EmailService {
@Autowired
private EmailConfig emailConfig;
@Autowired
private JavaMailSender mailSender;
实现邮件的发送,只要依赖 mail 包 就会有实体类
@Override
public void sendSimpleMail (String sendTo, String title, String content)
//实现简单邮件的发送,指含有文本的文件
SimpleMai lMessage message=new SimpleMailMessage () ;
构造邮件的实体类
message . set From (lemailConfig
.
getEmailFrom() )
;
指定谁发邮件
message . setTo ( sendTo)
;
通过参数接收过来
message. setSubject ("
title
") ;
message. setText ("
content
") ;
mailSender . send (message)
通过 mailSender.send方法发送出去
}
}
这是普通的邮件,只含有我文本的邮件。
只要注解被扫描到,就会创建 EmailConfig 的对象。
@Component
public class
EmailConfig
{
@Value ("$
{
spring . mail . username] ")
private String email From;
public String getEmail From()
{
return email From;
}
public void setEmail From(String emailFrom)
{
this . email From = email From;
}
6、创建 controller,EmailController。
加注解,调用 service,注入 emailservice。
@Controller
public class
EmailController
{
@Autowired
private EmailService email Service ;
@RequestMapping ("/simple")
@ResponseBody
public String sendS impleEmail ()
{
emailService . sendSimpleMail ("465008297@qq. com", "你好","明天去你家玩儿") ;自己发给自己
Return
‘’
success
’’;
}
}
7、进行 controller,service 的扫描。
@SpringBootApplication (scanBasePackages="com. qianfeng. email")
8、启动,controller 访问路径是 smtp,localhost:8080/simple。
邮件发送成功。