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方法第一个参数对于页面逻辑视图名称

posted @ 2018-04-13 00:07  杨天乐  阅读(10832)  评论(2编辑  收藏  举报