• Spring Boot Mail QQ企业邮箱


    这里记录一下QQ企业邮箱发邮件问题,因为之前遇到过一种情况是本地测试没问题,结果线上出现问题

    Couldn't connect to host, port: smtp.qq.com, 25; timeout -1
    

      

     要使用企业邮箱生成的授权密码.

    这里只要是因为QQ邮箱默认端口是465,需要修改为SSL配置

    java代码

    package com.chenpeng.cpeducloud.service.impl;
    import lombok.extern.slf4j.Slf4j;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.core.io.FileSystemResource;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.mail.javamail.MimeMessageHelper;
    import org.springframework.messaging.MessagingException;
    import org.springframework.stereotype.Service;
    
    import com.chenpeng.cpeducloud.base.WebConstants;
    import com.chenpeng.cpeducloud.service.MailService;
    import com.chenpeng.cpeducloud.util.Constants;
    import com.chenpeng.cpeducloud.util.DateUtils;
    import com.chenpeng.cpeducloud.util.StringUtils;
    
    import javax.mail.internet.MimeMessage;
    import java.io.File;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    /**
    
    /**auth : szy
     *time : 2019-05-16
     **/
    @Service
    @Slf4j
    public class MailServiceImpl implements MailService {
    
        @Autowired
        private JavaMailSender mailSender;
    
        @Value("${mail.formSender}")
        private String sender;// 发送者
    
        @Value("${mail.formMobile}")
        private String formMobile;// 联系电话
        
        /**
         * 发送简单邮件(收件人,主题,内容)
         */
        @Override
        public void sendSimpleMail(String to, String subject, String content) {
            SimpleMailMessage message = new SimpleMailMessage();
            message.setFrom(sender);
            message.setTo(to);
            message.setSubject(subject);
            message.setText(content);
            try {
                mailSender.send(message);
                log.info("简单邮件发送成功!");
            } catch (Exception e) {
                log.info("发送简单邮件时发生异常!"+e);
            }
        }
    
     
        /**
         * 发送Html邮件(收件人,主题,内容)
         */
        @Override
        public void sendHtmlMail(String to, String subject, String content) {
            MimeMessage message = mailSender.createMimeMessage();
            try {
                MimeMessageHelper helper = null;   //true表示需要创建一个multipart message
                try {
                    helper = new MimeMessageHelper(message, true);
                    message.setFrom(sender);
                    helper.setTo(to);
                    helper.setSubject(subject);
                    helper.setText(content, true);
                    mailSender.send(message);
                    log.info("html邮件发送成功");
                } catch (javax.mail.MessagingException e) {
                    e.printStackTrace();
                }
    
            } catch (MessagingException e) {
                log.info("发送html邮件时发生异常!"+e);
            }
        }
    
        /**
         * 发送带附件的邮件
         * @param to
         * @param subject
         * @param content
         * @param filePath
         */
        @Override
        public void sendAttachmentsMail(String to, String subject, String content, String filePath){
            MimeMessage message = mailSender.createMimeMessage();
    
            try {
                MimeMessageHelper helper = null;
                try {
                    helper = new MimeMessageHelper(message, true);
                    message.setFrom(sender);
                    helper.setTo(to);
                    helper.setSubject(subject);
                    helper.setText(content, true);
    
                    FileSystemResource file = new FileSystemResource(new File(filePath));
                    String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
                    helper.addAttachment(fileName, file);
                    //helper.addAttachment("test"+fileName, file);
    
                    mailSender.send(message);
                    log.info("带附件的邮件已经发送。");
                } catch (javax.mail.MessagingException e) {
                    e.printStackTrace();
                }
    
            } catch (MessagingException e) {
                log.info("发送带附件的邮件时发生异常!"+e);
            }
        }
    
    
        /**
         * 发送Html邮件(收件人,主题,内容),
         * 带多附件
         */
        @Override
        public void sendHtmlMailAndAttachments(String[] to,String[] cc, String subject, String content, List<String> files) {
            MimeMessage message = mailSender.createMimeMessage();
            try {
                MimeMessageHelper helper = null;   //true表示需要创建一个multipart message
                try {
                    helper = new MimeMessageHelper(message, true);
                    message.setFrom(sender);
                    helper.setTo(to);
                    helper.setCc(cc);
                    helper.setSubject(subject);
                    helper.setText(content, true);
    
                    for (String filePath : files){
                        FileSystemResource file = new FileSystemResource(new File(filePath));
                        String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
                        helper.addAttachment(fileName, file);
                    }
                    mailSender.send(message);
                    log.info("html邮件发送成功");
                } catch (javax.mail.MessagingException e) {
                    e.printStackTrace();
                }
    
            } catch (MessagingException e) {
                log.info("发送html邮件时发生异常!"+e);
            }
        }
        
    }
    

      

      #邮箱配置
      mail:
        host: smtp.exmail.qq.com
        username: 11111@qq.com
        password: 密钥不是密码
        default-encoding: utf-8
        port: 465
        properties:
          mail:
            smtp:
              auth: true
              ssl:
                enable: true
                socketFactory:
                  class: com.sun.mail.util.MailSSLSocketFactory
                  fallback: false
              starttls:
                      enable: true
                      required: true
  • 相关阅读:
    DATAGUARD物理standby角色切换(笔记二)
    深入了解start with .....connect by (一)
    oracle lob字段处理
    InstallShield12命令行模式编译工程的几点问题总结Emma友情赞助转帖
    Installshield实用小函数为字符串截掉头尾空格
    使用Java Service Wrapper将Java程序发布成Windows Service艾泽拉斯之海洋女神出品
    Kevin专栏自定义安装对话框的界面
    Kevin专栏如何制作试用版安装包
    【海洋女神原创】关于installshield“完美卸载”的改进方法
    Installshield的相对路径问题
  • 原文地址:https://www.cnblogs.com/sunxun/p/13445527.html
Copyright © 2020-2023  润新知