zoukankan      html  css  js  c++  java
  • SpirngBoot之整合邮件服务

    一、集成邮件服务

    1.1 获取客户端授权码

    1.2 引入依赖

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

    1.3 设置邮件服务属性

    spring:
      # 邮箱相关配置
      mail:
        # 邮箱服务器
        host: smtp.163.com
        # 邮箱帐号
        username: marklogzhu@163.com
        # 邮箱密码
        paswoord: 之前获取到的授权码
        # 默认编码格式
        default-encoding: utf-8
        # 属性配置
        properties:
          mail:
            smtp:
              auth: true
              starttls:
                enable: tue
                required: true
    

    1.4 实现邮件服务

    邮件服务接口

    public interface MailService {
    
        /**
         * 发送简单邮件
         *
         * @param deliveryAddress 收件人地址
         * @param subject         主题
         * @param text            正文
         */
        void sendSimpleMail(String deliveryAddress, String subject, String text);
    
    
        /**
         * 发送带附件邮件
         *
         * @param deliveryAddress 收件人地址
         * @param subject         主题
         * @param text            正文
         * @param files           附件数组
         * @throws MessagingException
         */
        void sendAttachmentsMail(String deliveryAddress, String subject, String text, File[] files) throws MessagingException;
    
        /**
         * 发送带内联邮件
         *
         * @param deliveryAddress 收件人地址
         * @param subject         主题
         * @param text            正文
         * @param file            内联文件
         * @throws MessagingException
         */
        void sendInlineMail(String deliveryAddress, String subject, String text, File file) throws MessagingException;
    
        /**
         * 发送模板邮件
         *
         * @param deliveryAddress    收件人地址
         * @param subject            主题
         * @param templateName       模板文件
         * @param contentVariableMap 模板内占位数据
         * @throws MessagingException
         */
        void sendTemplateMail(String deliveryAddress, String subject, String templateName,
                              Map<String, Object> contentVariableMap) throws MessagingException;
    
    }
    

    邮件服务接口实现

    /**
     * @author zhu
     * @description: 邮件服务接口实现类
     * @date 2019-11-04 16:32
     */
    @Service
    public class MailServiceImpl implements MailService {
    
        @Autowired
        private JavaMailSender mailSender;
        @Autowired
        private TemplateEngine templateEngine;
        // 读取配置文件中的参数
        @Value("${spring.mail.username}")
        private String sender;
    
        @Override
        public void sendSimpleMail(String deliveryAddress, String subject, String text) {
            SimpleMailMessage message = new SimpleMailMessage();
            // 发送者邮箱帐号
            message.setFrom(sender);
            // 接收者邮箱地址
            message.setTo(deliveryAddress);
            message.setSubject(subject);
            message.setText(text);
            mailSender.send(message);
        }
    
        @Override
        public void sendAttachmentsMail(String deliveryAddress, String subject, String text, File[] files) throws MessagingException {
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            // 发送者邮箱帐号
            helper.setFrom(sender);
            // 接收者邮箱帐号
            helper.setTo(deliveryAddress);
            helper.setSubject(subject);
            helper.setText(text);
            for (File file : files) {
                // 附件名称,注意附件后缀。
                helper.addAttachment(file.getName(), new FileSystemResource(file));
            }
            mailSender.send(mimeMessage);
        }
    
        @Override
        public void sendInlineMail(String deliveryAddress, String subject, String text, File file) throws MessagingException {
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            // 发送者邮箱帐号
            helper.setFrom(sender);
            // 接收者邮箱帐号
            helper.setTo(deliveryAddress);
            helper.setSubject(subject);
            // cid 与文件名需要相同,不需要后缀名
            helper.setText(text, true);
            FileSystemResource fileSystemResource = new FileSystemResource(file);
            // 与文件名需要相同,不需要后缀名
            helper.addInline(file.getName().substring(0, file.getName().lastIndexOf(".")), fileSystemResource);
            mailSender.send(mimeMessage);
        }
    
        @Override
        public void sendTemplateMail(String deliveryAddress, String subject, String templateName, Map<String, Object> contentVariableMap) throws MessagingException {
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            helper.setFrom(sender);
            helper.setTo(deliveryAddress);
            helper.setSubject(subject);
            //设置 map 形式数据
            Context context = new Context();
            context.setVariables(contentVariableMap);
            //获取模板 html 代码
            String text = templateEngine.process(templateName, context);
            helper.setText(text, true);
            mailSender.send(mimeMessage);
        }
    }
    

    二、测试

    2.1 测试简单邮件

    测试方法:

    @SpringBootTest
    public class MailServiceImplTest {
    
        @Autowired
        private MailService mailService;
    	private String deliveryAddress;
        
        @BeforeEach
        public void setUp() {
            deliveryAddress = "marklogzhu@163.com";
        }
        
        @Test
        public void testSendSimpleMail() {     
            String subject = "主题:简单邮件";
            String text = "测试邮件内容";
             mailService.sendSimpleMail(deliveryAddress,subject,text);
        }
    }
    

    执行方法,查看邮箱

    2.2 测试带附件邮件

    测试方法:

    @SpringBootTest
    public class MailServiceImplTest {
    
        @Autowired
        private MailService mailService;
    	private String deliveryAddress;
        
        @BeforeEach
        public void setUp() {
            deliveryAddress = "marklogzhu@163.com";
        }
        
        @Test
        public void testSendAttachmentsMail() throws MessagingException {
            String subject = "主题:有附件";
            String text = "有附件的邮件";
            File[] files = new File[]{new File("C:\Users\zhu\Pictures\Camera Roll\desktop.png")};
            mailService.sendAttachmentsMail(deliveryAddress,  subject,  text, files);
        }
    }
    

    执行方法,查看邮箱

    2.3 测试带内联邮件

    测试方法:

    @SpringBootTest
    public class MailServiceImplTest {
    
        @Autowired
        private MailService mailService;
    	private String deliveryAddress;
        
        @BeforeEach
        public void setUp() {
            deliveryAddress = "marklogzhu@163.com";
        }
        
        @Test
        public void testSendInlineMail() throws MessagingException {
            String subject = "主题:嵌入静态资源";
            String text = "<html><body><img src=\"cid:desktop\" ></body></html>";
            File file = new File("C:\Users\zhu\Pictures\Camera Roll\desktop.png");
            mailService.sendInlineMail(deliveryAddress, subject, text, file);
        }    
    
    }
    

    执行方法,查看邮箱

    2.4 测试模板邮件

    引入模板依赖

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

    resources/templates 目录下新建模板文件 mailTemplate.html

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <body>
    <h3>你好, <h2 th:text="${username}"></h2>, 这是一封模板邮件!</h3>
    </body>
    </html>
    

    测试方法:

    @SpringBootTest
    public class MailServiceImplTest {
    
        @Autowired
        private MailService mailService;
    	private String deliveryAddress;
        
        @BeforeEach
        public void setUp() {
            deliveryAddress = "marklogzhu@163.com";
        }
    }
    

    执行方法,查看邮箱

  • 相关阅读:
    【转+补充】在OpenCV for Android 2.4.5中使用SURF(nonfree module)
    Delphi StarOffice Framework Beta 1.0 发布
    Angular ngIf相关问题
    angularjs文档下载
    公众号微信支付开发
    公众号第三方平台开发 教程六 代公众号使用JS SDK说明
    公众号第三方平台开发 教程五 代公众号处理消息和事件
    公众号第三方平台开发 教程四 代公众号发起网页授权说明
    公众号第三方平台开发 教程三 微信公众号授权第三方平台
    公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取
  • 原文地址:https://www.cnblogs.com/markLogZhu/p/11796488.html
Copyright © 2011-2022 走看看