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

    springboot 邮件服务

      今天在看网上学习微服务的时候顺遍看到了一些关于springboot的文章,写的springboot拓展功能就顺遍学习了一下,接下来给大家分享一下springboot封装集成了邮件服务。

      发送邮件应该是网站的必备拓展功能之一,注册验证,忘记密码或者是给用户发送营销信息。正常我们会用JavaMail相关api来写发送邮件的相关代码,但现在springboot提供了一套更简易使用的封装。

    简易应用

      1.gradle配置

    compile('org.springframework.boot:spring-boot-starter-mail')

      2.编写配置

      我这里用的是qq邮箱发送,使用qq邮箱必须qq邮箱中 设置 >> 账户 >> 把POP3/SMTP服务开启

      

      
      如果用qq邮箱发送这里的password不是邮箱密码,是刚才开启POP3/SMTP服务时生成的链接字符

      properties返回类型是一个Map类型,properties肯定对应的是一些拓展的参数,那个smtp一定是需要开启的

      3.编码实现Text发送

       

       from为发送者

       to为接受者,可以理解为订阅者,这里可以传数组

       subject为标题

       content为内容

       编码测试

       4.编码实现HTML发送

    @Override
        public void sendHtmlMail(String to, String subject, String content) {
    
            MimeMessage message = mailSender.createMimeMessage();
    
            try {
                //true表示需要创建一个multipart message
                MimeMessageHelper helper = new MimeMessageHelper(message, true);
                helper.setFrom(from);
                helper.setTo(to);
                helper.setSubject(subject);
                helper.setText(content, true);
    
                mailSender.send(message);
                System.out.println("发送成功~");
            } catch (MessagingException e) {
                e.printStackTrace();
                System.out.println("发送失败~");
            }
        }

        HTML的发送需要借助MimeMessage,MimeMessageHelper的setTest方法提供是否开启html的重装方法。

      5.编码实现发送附件

        

     @Override
        public void sendAttachmentsMail(String to, String subject, String content,String path) {
            MimeMessage message = mailSender.createMimeMessage();
            try {
                MimeMessageHelper helper = new MimeMessageHelper(message,true);
                helper.setFrom(from);
                helper.setTo(to);
                helper.setSubject(subject);
                helper.setText(content, true);
                FileSystemResource fileSystemResource = new FileSystemResource(new File(path));
    
                String fileName= path.substring(path.lastIndexOf(File.separator));
                helper.addAttachment(fileName,fileSystemResource);
    
                mailSender.send(message);
                System.out.println("发送成功!");
            }catch (Exception e){
                e.printStackTrace();
                System.out.println("发送失败!");
            }
        }

         可以通过多个addAttachment方法发送多个附件,File.separator是用来分隔同一个路径字符串中的目录

       6.编写实现模板发送

        我们有时候收到的邮件就想一封信一样格式非常优雅,如果我们采用上面那种方式编写HTML字符硬性拼接的话起步很麻烦,所有对于这种需求,我们建议使用模板来处理。

        这里采用的是Thymeleaf来演示

        1.导入build.gradle

    compile('org.springframework.boot:spring-boot-starter-thymeleaf')

        2.在resources/templates新建index.html

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8"/>
        <title>Title</title>
    </head>
    <body>
    请点击下面的链接来验证身份<br/>
    <a href="#" th:href="@{ http://www.baidu.com/{id} }">激活账号</a>
    </body>
    </html>

        3.解析模块发送

    @Autowired
    private TemplateEngine templateEngine;
    
    @Test
    public void contextLoadsFour(){
        Context context = new Context();
        context.setVariable("id","110");
        String content = templateEngine.process("index",context);
        mailService.sendHtmlMail("2752555817@qq.com","Hello",content);
    }

        process方法第一个参数对于页面逻辑视图名称

  • 相关阅读:
    结合源码浅析Struts2与Spring整合的原理
    LINUX centOS6.x下安装redis
    基于Spring注解@cacheable 集成redis
    windows下搭建LDAP并利用Java实现对LDAP的操作
    Java利用freemaker和(excelXML表格或wordXML表格),导出自己任何想要格式的文档
    创建oracle表的时候一个小细节,会导致你处理java类型转换是时候很麻烦
    socketlog的安装和使用
    Windows 定时任务对数据库进行操作
    将博客搬至CSDN
    git+gitlab实现git版本控制管理本地化+自动化部署
  • 原文地址:https://www.cnblogs.com/yangtianle/p/8811732.html
Copyright © 2011-2022 走看看