zoukankan      html  css  js  c++  java
  • SpringBoot 邮件任务

    SpringBoot 邮件任务

    今天学习了异步任务和邮件任务等等,写篇随笔记录一下邮件任务

    导入依赖(也可以自己创建SpringBoot项目时勾选上启动器)

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    

    开启POP3/SMTP服务(这里以QQ邮箱为例)
    登录QQ邮箱,在设置->帐户寻找下面的服务

    编写配置文件(这里使用properties)

    # 填写自己的邮箱 这里以QQ邮箱为例
    spring.mail.username=*********@qq.com
    # 这里是自己邮箱的授权码,如果是QQ邮箱,需要自己去开启服务,并且获取授权码,其它邮箱就是自己的密码
    spring.mail.password=************* 
    spring.mail.host=smtp.qq.com
    spring.mail.properties.mail.smtp.auth=true
    spring.mail.properties.mail.smtp.starttls.enable=true
    spring.mail.properties.mail.smtp.starttls.required=true
    # 开启加密验证
    spring.mail.properties.mail.smtp.ssl.enable=true
    
    

    测试

    	@Autowired
        JavaMailSender javaMailSender;
    	@Test
        void contextLoads() {
            //发送简单邮件
            SimpleMailMessage message = new SimpleMailMessage();
            message.setSubject("激活邮件");							//设置标题
            message.setText("您好,这是一封测试邮件,无需回复");           //设置正文
            message.setTo("2933253458@qq.com");						//发给谁
            message.setFrom("2933253458@qq.com");					//谁发的
            javaMailSender.send(message);
        }
    

    	@Autowired
    	JavaMailSender javaMailSender;
    	@Test
        public void test01() throws MessagingException {
            //发送复杂邮件(html+附件)
            MimeMessage mimeMessage = javaMailSender.createMimeMessage();
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
            mimeMessageHelper.setSubject("激活邮件");   //设置邮件主题
            mimeMessageHelper.setText("<p>您好,这是一封测试邮件!<p>",true);//开启解析html
            //发送附件
            mimeMessageHelper.addAttachment("图片.png",new File("C:\Users\gaoteng\Desktop\Typora截图\QQ截图20200613091605.png"));
            //发给谁
            mimeMessageHelper.setTo("2933253458@qq.com");
            //谁发的
            mimeMessageHelper.setFrom("2933253458@qq.com");
            javaMailSender.send(mimeMessage);
        }
    

    抽取工具类(这是在网上找的某大佬的,后面会附上链接)

    package com.gaoteng.service;
    
    
    import java.io.File;
    import java.util.Map;
    
    /**
     * created by lxh
     * Date: 2017/12/4
     * Time: 8:46
     * Description: 邮件发送服务类,不保证可靠性,由于发件邮箱限制,和收件者邮箱的限制,有可能邮件会被回退
     */
    public interface MailSendService {
    
        /**
         * 发送简单文本邮件
         * @param to 收件人,一组,不能为空
         * @param subject 邮件主题
         * @param content 邮件内容
         * @throws Exception
         */
        void sendSimpleMail(String[] to, String subject, String content) throws Exception;
    
        /**
         * 发送Html邮件
         * @param to 收件人
         * @param subject 邮件主题
         * @param html 邮件内容,html
         * @throws Exception
         */
        void sendHtmlMail(String[] to, String subject, String html) throws Exception;
    
        /**
         * 发送带附件的邮件
         * @param to 收件人
         * @param subject 邮件主题
         * @param content 邮件内容
         * @param files 附件,key请将文件的扩展名也加上,否则无法预览。如:picture.jpg
         * @throws Exception
         */
        void sendAttachmentsMail(String[] to, String subject, String content, Map<String, File> files) throws Exception;
    
        /**
         * 发送带静态资源的邮件<br />
         * 将文件内容显示在邮件内容中,一般为图片,如果为文件,有待测试
         * @param to 收件人
         * @param subject 邮件主题
         * @param html html文本
         * @param files 要加入html中的静态资源<br />
         * example: <br />
         * html: "带静态资源的邮件内容 图片:img src='cid:dog'    img src='cid:pig'"<br />
         * files: [{key:dog, value: dog.jpg},{key:pig, value:pig.jpg}]<br />
         * files中的key要和html中的cid一一对应。
         * @throws Exception
         */
        void sendInlineMail(String[] to, String subject, String html, Map<String, File> files) throws Exception;
    
    
    }
    
    
    package com.gaoteng.service.impl;
    
    import com.gaoteng.service.MailSendService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.mail.javamail.MimeMessageHelper;
    import org.springframework.stereotype.Service;
    
    
    import javax.mail.internet.MimeMessage;
    import java.io.File;
    import java.util.Map;
    import java.util.Set;
    
    /**
     * created by lxh
     * Date: 2017/12/4
     * Time: 8:54
     * Description:
     */
    @Service
    public class MailSendServiceImpl implements MailSendService {
    
        @Autowired
        private JavaMailSender mailSender;
    
        //@Value("spring.mail.username")
        private static final String sender = "2933253458@qq.com";
    
        @Override
        public void sendSimpleMail(String[] to, String subject, String content) throws Exception {
            SimpleMailMessage message = new SimpleMailMessage();
            message.setFrom(sender);
            message.setTo(to);
            message.setSubject(subject);
            message.setText(content);
            mailSender.send(message);
        }
    
        @Override
        public void sendHtmlMail(String[] to, String subject, String html) throws Exception {
            MimeMessage message = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(sender);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(html, true);
            mailSender.send(message);
        }
    
        @Override
        public void sendAttachmentsMail(String[] to, String subject, String content, Map<String, File> files) throws Exception {
            MimeMessage message = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(sender);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content);
            //注意项目路径问题,自动补用项目路径
            //FileSystemResource file = new FileSystemResource(new File("src/main/resources/static/image/picture.jpg"));
            //加入邮件
            //helper.addAttachment("图片.jpg", file);
            Set<Map.Entry<String,File>> fileSet = files.entrySet();
            for (Map.Entry f : fileSet) {
                helper.addAttachment((String) f.getKey(), (File) f.getValue());
            }
            mailSender.send(message);
        }
    
        @Override
        public void sendInlineMail(String[] to, String subject, String html, Map<String, File> files) throws Exception {
            MimeMessage message = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(sender);
            helper.setTo(to);
            helper.setSubject(subject);
            //第二个参数指定发送的是HTML格式,同时cid:是固定的写法
            //"<html><body>带静态资源的邮件内容 图片:<img src='cid:picture' /></body></html>"
            helper.setText(html, true);
            Set<Map.Entry<String,File>> fileSet = files.entrySet();
            for (Map.Entry f : fileSet) {
                helper.addInline((String) f.getKey(), (File) f.getValue());
            }
            //FileSystemResource file = new FileSystemResource(new File("src/main/resources/static/image/picture.jpg"));
            //helper.addInline("picture",file);
            mailSender.send(message);
        }
    }
    
    

    因为测试结果太多,所以我就不贴图片了.

    本篇随笔参考使用spring-boot-starter-mail实现邮件发送
    特别感谢!!!

  • 相关阅读:
    python常用运维脚本实例
    数据库优化方案整理
    Python第一章概述与环境安装
    九阴真经
    常用的kubectl命令
    第7篇管理存储资源
    第8篇NFS PersistentVolume
    第10篇用 ConfigMap 管理配置
    第11篇Kubernetes部署微服务电商平台
    第12篇Kubernetes 监控
  • 原文地址:https://www.cnblogs.com/gttttttt/p/13121264.html
Copyright © 2011-2022 走看看