zoukankan      html  css  js  c++  java
  • springBoot 发送邮件

    1、引入依赖

            <!--邮件发送 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-mail</artifactId>
            </dependency>

    2、参数信息配置

    #邮箱相关配置信息
    spring:
      mail:
        host: smtp.qq.com
        port: 465
        username: 2423******@qq.com
        password: jngwodwc*********
        protocol: smtp
        default-encoding: UTF-8
        properties:
          mail.smtp.auth: true
          mail.smtp.starttls.enable: true
          mail.smtp.starttls.required: true
          mail.smtp.socketFactory.port: 465
          mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
          mail.smtp.socketFactory.fallback: false
          from: 2423******@qq.com

    其中password 为授权码,在邮箱设置中获取

    qq邮箱的host为:smtp.qq.com

    163邮箱的host为:smtp.163.com

    3、邮箱实体类:

    public class MailVo {
        private String id;// 邮件id
        private String from;// 邮件发送人
        private String to;// 邮件接收人
        private String subject;// 邮件主题
        private String text;// 邮件内容
        private Date sentDate;// 发送时间
        private String cc; // 抄送
        private String bcc; // 密送
        private String status; // 状态
        private String error; // 报错信息
        @JsonIgnore
        private MultipartFile[] multipartFiles;// 邮件附件
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getFrom() {
            return from;
        }
        public void setFrom(String from) {
            this.from = from;
        }
        public String getTo() {
            return to;
        }
        public void setTo(String to) {
            this.to = to;
        }
        public String getSubject() {
            return subject;
        }
        public void setSubject(String subject) {
            this.subject = subject;
        }
        public String getText() {
            return text;
        }
        public void setText(String text) {
            this.text = text;
        }
        public Date getSentDate() {
            return sentDate;
        }
        public void setSentDate(Date sentDate) {
            this.sentDate = sentDate;
        }
        public String getCc() {
            return cc;
        }
        public void setCc(String cc) {
            this.cc = cc;
        }
        public String getBcc() {
            return bcc;
        }
        public void setBcc(String bcc) {
            this.bcc = bcc;
        }
        public String getStatus() {
            return status;
        }
        public void setStatus(String status) {
            this.status = status;
        }
        public String getError() {
            return error;
        }
        public void setError(String error) {
            this.error = error;
        }
        public MultipartFile[] getMultipartFiles() {
            return multipartFiles;
        }
        public void setMultipartFiles(MultipartFile[] multipartFiles) {
            this.multipartFiles = multipartFiles;
        }
        @Override
        public String toString() {
            return "MailVo [id=" + id + ", from=" + from + ", to=" + to + ", subject=" + subject + ", text=" + text
                    + ", sentDate=" + sentDate + ", cc=" + cc + ", bcc=" + bcc + ", status=" + status + ", error=" + error
                    + ", multipartFiles=" + Arrays.toString(multipartFiles) + "]";
        }
        
    }

    4、邮箱发送工具类

    @Component
    public class EmailUtils {
    
        @Autowired
        private JavaMailSenderImpl mailSender;//注入邮件工具类
        
        @Async
        public MailVo sendMail(MailVo mailVo) {
            try {
                checkMail(mailVo); //1.检测邮件
                sendMimeMail(mailVo); //2.发送邮件
                return saveMail(mailVo); //3.保存邮件
            } catch (Exception e) {
                mailVo.setStatus("fail");
                mailVo.setError(e.getMessage());
                //e.printStackTrace();
                return mailVo;
            }
        }
     
        //检测邮件信息类
        private void checkMail(MailVo mailVo) {
            if (StringUtils.isEmpty(mailVo.getTo())) {
                throw new RuntimeException("邮件收信人不能为空");
            }
            if (StringUtils.isEmpty(mailVo.getSubject())) {
                throw new RuntimeException("邮件主题不能为空");
            }
            if (StringUtils.isEmpty(mailVo.getText())) {
                throw new RuntimeException("邮件内容不能为空");
            }
        }
     
        // 发送邮件
        private void sendMimeMail(MailVo mailVo) {
            try {
                MimeMessage createMimeMessage = mailSender.createMimeMessage();
                MimeMessageHelper messageHelper = new MimeMessageHelper(createMimeMessage, true,"UTF-8");//true表示支持复杂类型
                String mailSendFrom = getMailSendFrom();
                mailVo.setFrom(mailSendFrom);//邮件发信人从配置项读取
                messageHelper.setFrom(mailSendFrom);//邮件发信人
                messageHelper.setTo(mailVo.getTo().split(","));//邮件收信人
                messageHelper.setSubject(mailVo.getSubject());//邮件主题
                messageHelper.setText(mailVo.getText());//邮件内容
                if (!StringUtils.isEmpty(mailVo.getCc())) {//抄送
                    messageHelper.setCc(mailVo.getCc().split(","));
                }
                if (!StringUtils.isEmpty(mailVo.getBcc())) {//密送
                    messageHelper.setCc(mailVo.getBcc().split(","));
                }
                if (mailVo.getMultipartFiles() != null) {//添加邮件附件
                    for (MultipartFile multipartFile : mailVo.getMultipartFiles()) {
                        messageHelper.addAttachment(multipartFile.getOriginalFilename(), multipartFile);
                    }
                }
                mailVo.setSentDate(new Date());
                messageHelper.setSentDate(mailVo.getSentDate());
                
                mailSender.send(createMimeMessage);//正式发送邮件
                mailVo.setStatus("ok");
                System.out.println(mailVo.toString());
            }
            catch (Exception e) {
                throw new RuntimeException(e);//发送失败
            }
        }
        
        //保存邮件
        private MailVo saveMail(MailVo mailVo) {
            //将邮件保存到数据库..
     
            return mailVo;
        }
     
        //获取邮件发信人
        public String getMailSendFrom() {
            return mailSender.getJavaMailProperties().getProperty("from");
        }
    
    
    }

    邮件发送调用的方法为:  

    EmailUtils.send(mailVo)
     
  • 相关阅读:
    java中的构造方法
    在CentOS6.4上安装GitLab
    java通过文件路径读取该路径下的所有文件并将其放入list中
    java IO流 内容整理
    Selenium Webdriver元素定位的八种常用方式
    揭秘Alltesting众测平台
    TestCenter中测试需求、测试用例、测试计划的评审方法
    测试管理工具(TestCenter)产品功能介绍
    Bug管理工具(TCE)之缺陷导入与导出
    Bug管理工具(TCE)之缺陷流程定制
  • 原文地址:https://www.cnblogs.com/luyilan/p/13967831.html
Copyright © 2011-2022 走看看