邮件服务


  1. 添加发件人邮箱配置,这里以163邮箱为例,实际配置根据邮箱服务商变动。
spring:
  mail:
    # 邮箱服务器
    host: smtp.163.com
    # 邮箱账号
    username: xxxx@163.com
    # 邮箱密码
    password: xxxxx
    properties:
      mail:
        smtp:
          starttls:
            enable: true
            required: true
          auth: true
          socketFactory:
            # 邮箱SSL端口
            port: 465
            class: javax.net.ssl.SSLSocketFactory

其中password不是邮箱的密码,而是授权码,具体获取方式可进入到个人邮箱的设置页面,授权码可用于第三方进行邮箱的发送。

  1. 发送邮件代码示例
   // 注入邮件相关服务
    @Autowired
    private JavaMailSender javaMailSender;

    @Autowired
    private MessageService messageService;

    // 发送简单的文本
    void sendTextMail(){
        MailDto mailDto = new MailDto();
        // 发件人
        mailDto.setFrom("xxx@163.com");
        // 收件人,多个用,隔开
        mailDto.setTo("xxxx@qq.com");
        // 抄送人,多个用,隔开
        mailDto.setCc("xxxx@qq.com");
        // 密送,多个用,隔开
        mailDto.setBcc("xxxx@qq.com");
        // 是否是html文本,默认为false
        mailDto.setHtml(false);
        // 发送时间
        mailDto.setSentDate(new Date());
        // 邮件主题
        mailDto.setSubject("测试发送邮件");
        // 邮件内容
        mailDto.setText("hello world");
       
       // async为true时表示异步发送,将提交队列中
       messageService.getMailService().sendSimpleMailMessage(javaMailSender, mailDto, true);

    }

    
    //发送Html
    public void sendHtmlMail() throws Exception {
    

        StringBuilder sb = new StringBuilder();
        sb.append("<html><head></head>");
        sb.append("<body><h1>spring 邮件测试</h1><p>hello!this is spring mail test。</p></body>");
        sb.append("</html>");

         MailDto mailDto = new MailDto();
        // 发件人
        mailDto.setFrom("xxx@163.com");
        // 收件人,多个用,隔开
        mailDto.setTo("xxxx@qq.com");
        // 抄送人,多个用,隔开
        mailDto.setCc("xxxx@qq.com");
        // 密送,多个用,隔开
        mailDto.setBcc("xxxx@qq.com");
        // 是否是html文本,默认为false
        mailDto.setHtml(true);
        // 发送时间
        mailDto.setSentDate(new Date());

        // 邮件主题
        mailDto.setSubject("测试发送邮件");
        // 邮件内容
        mailDto.setText(sb.toString());

        // 发送邮件
        messageService.getMailService().sendMimeMessage(javaMailSender, mailDto, true);

      

    }

如果想动态的切换邮箱的配置,可以手动初始化设置

        //设置参数
        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
        javaMailSender.setHost(host);
        javaMailSender.setPort(port);
        javaMailSender.setUsername(from);
        javaMailSender.setPassword(password);
        javaMailSender.setDefaultEncoding("utf-8");
        Properties p = new Properties();
        p.setProperty("mail.smtp.auth", "true");
        javaMailSender.setJavaMailProperties(p);


        MailDto mailDto = new MailDto();
        // 发件人
        mailDto.setFrom("xxx@163.com");
        // 收件人,多个用,隔开
        mailDto.setTo("xxxx@qq.com");
        // 抄送人,多个用,隔开
        mailDto.setCc("xxxx@qq.com");
        // 密送,多个用,隔开
        mailDto.setBcc("xxxx@qq.com");
        // 是否是html文本,默认为false
        mailDto.setHtml(false);
        // 发送时间
        mailDto.setSentDate(new Date());
        // 邮件主题
        mailDto.setSubject("测试发送邮件");
        // 邮件内容
        mailDto.setText("hello world");
       
       // async为true时表示异步发送,将提交队列中
       messageService.getMailService().sendSimpleMailMessage(javaMailSender, mailDto, true);