zoukankan      html  css  js  c++  java
  • 邮箱调用发送信息

    文章首推

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

    简介

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

    环境

    • 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、批量发送

     @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、携带附件发送

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


    欢迎关注公众号:java后端指南

  • 相关阅读:
    Java 的垃圾回收机制
    Java 变参函数的实现
    对已知有限集合中缺失或重复元素的查找
    Java 旋转数组查找旋转点和任意元素(元素可重复)
    第三章 磁盘分区
    第二章 一切都是对象
    发布 AutoRssReceiver Console 机器人! 兼讲: .Net 中的 Attribute (特性)
    .Net/C#/VB/TSQL/Java 实现: 将天文数字转换成中文大写 (2000 年前的思路,打劫的,一点儿技术含量都没有)
    .Net/C#/VB/TSQL/Java/Script 实现: 将天文数字转换成中文大写 (2000 年前的思路,打劫的,一点儿技术含量都没有)
    利用"委托"实现类的对象实例按"多字段嵌套"排序
  • 原文地址:https://www.cnblogs.com/KING-TING/p/13943699.html
Copyright © 2011-2022 走看看