今日主题:邮箱调用发送信息
简介
上个礼拜讲了短信验证码如何登陆,现在来向大家讲讲如何使用邮箱验证码登录,其实原理比较简单,和短信差不多,因为不管是短信还是邮箱,他只是一个发送工具,难的是里面的业务。
环境
- springboot
- QQ邮箱
实现过程
1、QQ 邮箱
通过生成授权码
来设置密码
2、建立一个springboot
工程,添加依赖:
<!--邮箱依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
3、配置properties
文件
spring.mail.host=smtp.qq.com
spring.mail.username=邮箱名
spring.mail.password=这里填邮箱的授权码
spring.mail.default-encoding=UTF-8
spring.mail.port=465
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.debug=true
或者yml
文件
server:
port: 8080
spring:
mail:
host: smtp.qq.com
username: 2926502315@qq.com
#授权码
password:
default-encoding: UTF-8
port: 465
properties:
mail:
smtp:
socketFactory:
class: javax.net.ssl.SSLSocketFactory
debug: true
4、写控制类,单个发送
@RestController
public class MailController {
@Autowired
JavaMailSender mailSender;
@RequestMapping("/send")
public String sendEmail(){
try {
final MimeMessage mimeMessage = this.mailSender.createMimeMessage();
final MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
//设置发送人
message.setFrom("2926502315@qq.com");
//发送给谁
message.setTo("2447432515@qq.com");
//标题
message.setSubject("测试");
//正文
message.setText("这是一个邮件信息发送功能测试");
} catch (MessagingException e) {
e.printStackTrace();
return "error";
}
}
}
发送成功
5、批量发送
代码语言:javascript复制 @RequestMapping("/sendMore")
public String sendMoreEmail(){
list.add("232515@qq.com");
list.add("2542616@qq.com");
try {
final MimeMessage mimeMessage = this.mailSender.createMimeMessage();
final MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
//设置发送人
message.setFrom("2922315@qq.com");
//发送给谁
//将集合转成数组
String[] emails=list.stream().toArray(String[]::new);
message.setTo(emails);
//标题
message.setSubject("测试");
//正文
message.setText("这是一个邮件信息发送功能测试");
this.mailSender.send(mimeMessage);
return "success send";
} catch (MessagingException e) {
e.printStackTrace();
return "error";
}
}
6、携带附件发送
代码语言:javascript复制 @RequestMapping("/sendMoreAndFile")
public String sendMoreAndFileEmail(){
list.add("2432515@qq.com");
list.add("25429616@qq.com");
list.add("2922315@qq.com");
try {
final MimeMessage mimeMessage = this.mailSender.createMimeMessage();
//携带附件,需要加true参数
final MimeMessageHelper message = new MimeMessageHelper(mimeMessage,true);
//设置发送人
message.setFrom("292315@qq.com");
//发送给谁
//将集合转成数组
String[] emails=list.stream().toArray(String[]::new);
message.setTo(emails);
//标题
message.setSubject("测试");
//正文
message.setText("这是一个邮件信息发送功能测试");
File file=new File("src/main/resources/《Linux就该这么学》正式版电子书.pdf");
System.out.println("文件是否存在:" file.exists());
message.addAttachment(file.getName(),file);
this.mailSender.send(mimeMessage);
return "success send";
} catch (MessagingException e) {
e.printStackTrace();
return "error";
}
}
7、我这里只写如何发送,具体的业务可以去参考我之前写的短信验证的文章