springboot(07)邮件发送(qq邮箱)
可以使用Spring Boot提供的spring-boot-starter-mail模块来发送QQ邮件
首先登录QQ邮箱>>>登录成功后找到设置>>>然后找到邮箱设置>>>点击账户>>>找到POP3|SMTP服务>>>点击开启(开启需要验证,验证成功后会有一串授权码用于发送邮件使用)>>>验证成功
记下QQ邮箱提示的授权码,这个授权码,就是发送邮件时需要的密码。
1、引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2、application.yml配置
在配置文件application.yml文件中写入发送邮件的配置信息
spring:
#邮箱基本配置
mail:
#配置smtp服务主机地址
# qq邮箱为smtp.qq.com 端口号465或587
# sina smtp.sina.cn
# aliyun smtp.aliyun.com
# 163 smtp.163.com 端口号465或994
host: smtp.qq.com
#发送者邮箱
username: 1045906978@qq.com
#配置密码,注意不是真正的密码,而是刚刚申请到的授权码
password: fe456156fefefee
#端口号465或587
port: 587
#默认的邮件编码为UTF-8
default-encoding: UTF-8
#其他参数
properties:
mail:
#配置SSL 加密工厂
smtp:
ssl:
#本地测试,先放开ssl
enable: false
required: false
#开启debug模式,这样邮件发送过程的日志会在控制台打印出来,方便排查错误
debug: true
3、编写发送邮件方法
编写邮件业务类MailService,分三种发送邮件类型:纯文本邮件、html邮件和带附件的邮件。
主要通过MailService工具类就可以满足发送java邮件的需要。当我们进行好 yml 配置后,SpringBoot会帮助我们自动配置 JavaMailSender 我们通过这个java类就可以实现操作java来发送邮件。
package com.buba.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.mail.MessagingException;
import java.util.Date;
@RestController
@RequestMapping("/email")
public class EmailController {
/**
* 注入邮件工具类
*/
@Autowired
private JavaMailSenderImpl javaMailSender;
@Value("${spring.mail.username}")
private String sendMailer;
/**
* 发送邮件
* @param title 标题 (字符串)
* @param text 主题内容(字符串)
* @param receive 邮件的接受人(字符串)
*/
@GetMapping("sendEmail")
public void sendEmail(String title,String text,String receive) {
try {
//true 代表支持复杂的类型
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(javaMailSender.createMimeMessage(),true);
//邮件发信人
mimeMessageHelper.setFrom(sendMailer);
//邮件收信人
mimeMessageHelper.setTo(receive);
//邮件主题
mimeMessageHelper.setSubject(title);
//邮件内容
mimeMessageHelper.setText(text);
//邮件发送时间
mimeMessageHelper.setSentDate(new Date());
//发送邮件
javaMailSender.send(mimeMessageHelper.getMimeMessage());
System.out.println("发送邮件成功:" +sendMailer+"===>"+receive);
} catch (MessagingException e) {
e.printStackTrace();
System.out.println("发送邮件失败:"+e.getMessage());
}
}
}
这是一个使用Spring框架实现的邮件发送的Java类。类中包含了一个发送邮件的方法sendEmail。该方法需要传入邮件的标题、主题内容和接收人。
在类中,首先使用@Autowired注解注入了JavaMailSenderImpl的实例javaMailSender。然后使用@Value注解注入了发送邮件的邮箱地址sendMailer。
sendEmail方法中,使用MimeMessageHelper创建了一个MimeMessageHelper的实例mimeMessageHelper。该实例支持复杂的邮件类型。接着设置了邮件发信人、邮件收信人、邮件主题、邮件内容、邮件发送时间。最后调用javaMailSender的send方法发送邮件。
如果发送邮件成功,将会打印发送邮件成功:[sendMailer]===>[receive]
,否则将会打印发送邮件失败:[e.getMessage()]
。