邮箱调用发送信息

2021-05-13 14:44:39 浏览数 (1)

今日主题:邮箱调用发送信息

简介

上个礼拜讲了短信验证码如何登陆,现在来向大家讲讲如何使用邮箱验证码登录,其实原理比较简单,和短信差不多,因为不管是短信还是邮箱,他只是一个发送工具,难的是里面的业务。

环境

  • springboot
  • QQ邮箱

实现过程

1、QQ 邮箱通过生成授权码来设置密码

2、建立一个springboot工程,添加依赖:

代码语言:javascript复制
 <!--邮箱依赖-->
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-mail</artifactId>
   </dependency>

3、配置properties文件

代码语言:javascript复制
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文件

代码语言:javascript复制
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、写控制类,单个发送

代码语言:javascript复制
@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、我这里只写如何发送,具体的业务可以去参考我之前写的短信验证的文章

0 人点赞