Spring Boot 发送邮件

Spring Boot 使用 JavaMailSender 来发送邮件,Spring Boot 是用来自动配置实现配置。邮件发送没有什么技术难点,拿来即用。

本项目源码下载

1 新建 Spring Boot Maven 示例工程项目

注意:是用来 IDEA 开发工具

  1. File > New > Project,如下图选择 Spring Initializr 然后点击 【Next】下一步
  2. 填写 GroupId(包名)、Artifact(项目名) 即可。点击 下一步
    groupId=com.fishpro
    artifactId=sendemail
  3. 选择依赖 Spring Web Starter 前面打钩。
  4. 项目名设置为 spring-boot-study-sendemail.

2 引入依赖 Pom

包括了

  • mail
  • freemarker
 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

3 配置邮件信息

# JavaMailSender 邮件发送的配置
spring.mail.host=smtp.qq.com
spring.mail.username=用户qq邮箱
#QQ邮箱的授权码
spring.mail.password=授权码
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.default-encoding=UTF-8

4 编写示例代码

本示例中编写了一个RestController 类 MailController,以下是功能片段

4.1 发送文本邮件

   /**
    * 发送文本标题 文本内容
    * */
   @GetMapping("/sendMail")
   public String sendMail(){
       try{

           SimpleMailMessage message = new SimpleMailMessage();
           message.setFrom(sendUser);
           message.setTo("[email protected]");
           message.setSubject("主题邮件");
           message.setText("邮件内容");
           mailSender.send(message);
           return "success";
       }catch (Exception e){
           e.printStackTrace();
           return "fail";
       }
   }

4.2 发送邮件内容为 Html 的邮件

/**
    * 发送html内容
    * */
   @GetMapping("/sendHtmlMail")
   public String sendHtmlMail(){
       MimeMessage message=null;
       try{

           message = mailSender.createMimeMessage();
           MimeMessageHelper helper = new MimeMessageHelper(message,true);
           helper.setFrom(sendUser);
           helper.setTo("[email protected]");
           helper.setSubject("主题邮件");
           StringBuilder sb=new StringBuilder();
           sb.append("<h1>尊敬的客户您好!</h1>")
                   .append("<p>欢迎您访问我的博客 www.fishpro.com.cn</p>");
           helper.setText(sb.toString(),true);
       }catch (Exception e){
           e.printStackTrace();
           return "fail";
       }
       mailSender.send(message);
       return "success";
   }

4.3 发送带有附件的邮件

/**
    * 发送附件内容
    * */
   @GetMapping("/sendAttachMail")
   public String sendAttachMail(){
       MimeMessage message=null;
       try{

           message = mailSender.createMimeMessage();
           MimeMessageHelper helper = new MimeMessageHelper(message,true);
           helper.setFrom(sendUser);
           helper.setTo("[email protected]");
           helper.setSubject("主题邮件");
           StringBuilder sb=new StringBuilder();
           sb.append("<h1>尊敬的客户您好!</h1>")
                   .append("<p>欢迎您访问我的博客 www.fishpro.com.cn</p>");
           helper.setText(sb.toString(),true);
           //获取附件资源
           FileSystemResource fileSystemResource =new FileSystemResource(new File(""));
           //把附件资源加入到发送消息中
           helper.addAttachment("",fileSystemResource);

       }catch (Exception e){
           e.printStackTrace();
           return "fail";
       }
       mailSender.send(message);
       return "success";
   }

4.4 发送带静态资源的邮件

/**
    * 发送带静态资源的邮件
    * */
   @GetMapping("/sendInlineMail")
   public String sendInlineMail(){
       MimeMessage message=null;
       try{

           message = mailSender.createMimeMessage();
           MimeMessageHelper helper = new MimeMessageHelper(message,true);
           helper.setFrom(sendUser);
           helper.setTo("[email protected]");
           helper.setSubject("主题邮件");
           StringBuilder sb=new StringBuilder();
           sb.append("<h1>尊敬的客户您好!</h1>")
                   .append("<p>欢迎您访问我的博客 www.fishpro.com.cn</p><p><img src='cid:pic' /></p>");
           helper.setText(sb.toString(),true);
           //获取附件资源
           FileSystemResource fileSystemResource =new FileSystemResource(new File(""));
           //把附件资源加入到发送消息中
           helper.addInline("pic",fileSystemResource);

       }catch (Exception e){
           e.printStackTrace();
           return "fail";
       }
       mailSender.send(message);
       return "success";
   }

4.5 发送基于 freemarker 模板内容的邮件

/**
    * 基于 freemarker 模板发送
    * */
   @GetMapping("/sendTemplateMail")
   public String sendTemplateMail(){
       MimeMessage message = null;
       try{

           message = mailSender.createMimeMessage();
           MimeMessageHelper helper = new MimeMessageHelper(message,true);
           helper.setFrom(sendUser);
           helper.setTo("[email protected]");
           helper.setSubject("主题邮件");
           Map<String,Object> model =new HashMap<>();
           model.put("welcome","欢迎您,hello world template email ");
           //使用 freeMarkerConfigurer 获取模板 index.ftl
           Template template = freeMarkerConfigurer.getConfiguration().getTemplate("index.ftl");
           String html = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
           helper.setText(html, true);

       }catch (Exception e){
           e.printStackTrace();
           return "fail";
       }
       mailSender.send(message);
       return "success";
   }

完整代码
本项目源码下载



参考:
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-email.html

原文地址:https://www.cnblogs.com/fishpro/p/spring-boot-study-sendemail.html

时间: 2024-08-29 16:23:28

Spring Boot 发送邮件的相关文章

spring boot发送邮件

1.引入maven依赖包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 2.配置文件 #JavaMailSender 邮件发送的配置 #spring.mail.host=smtp.qq.com spring.mail.host=smtp.16

21. Spring Boot过滤器、监听器【从零开始学Spring Boot】

转载:http://blog.csdn.net/linxingliang/article/details/52069490 上一篇文章已经对定义Servlet 的方法进行了说明,过滤器(Filter)和 监听器(Listener)的注册方法和 Servlet 一样,不清楚的可以查看下上一篇文章(20): 本文将直接使用@WebFilter和@WebListener的方式,完成一个Filter 和一个 Listener:使用注解 @ServletComponentScan//这个就是扫描相应的Se

spring-boot实战【12】:Spring Boot中使用JavaMailSender发送邮件

相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送.在Spring Boot的Starter模块中也为此提供了自动化配置.下面通过实例看看如何在Spring Boot中使用JavaMailSender发送邮件. 快速入门 在Spring Boot的工程中的pom.xml中引入spring-boot-starter-mail依赖: 1 2 3 4 <dependency> <groupId>org.springframew

Spring Boot中使用JavaMailSender发送邮件

相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送.在Spring Boot的Starter模块中也为此提供了自动化配置.下面通过实例看看如何在Spring Boot中使用JavaMailSender发送邮件. 快速入门 在Spring Boot的工程中的pom.xml中引入spring-boot-starter-mail依赖: <dependency> <groupId>org.springframework.boot

Spring Boot使用JavaMailSender发送邮件

Spring提供了非常好用的JavaMailSender接口实现邮件发送.在Spring Boot中也提供了相应的自动化配置. 这篇文章主要讲如何在Spring Boot中使用JavaMailSender发送邮件. 发送邮件 1,在pom.xml中引入spring-boot-starter-mail依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b

Spring boot + Gradle + Eclipse打war包发布总结

首先感谢两位博主的分享 http://lib.csdn.net/article/git/55444?knId=767 https://my.oschina.net/alexnine/blog/540651 buildscript { ext { springBootVersion = '1.5.2.RELEASE' } repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } jcent

RabbitMq+Spring boot 消息生产者向队列发送消息 (一)

本人学习新框架方法. 一.先学习框架基本知识,也就是看这本书的前三章,了解基本概念.比如这个Rabbitmq,我会先看一些概念,比如,交换机,路由器,队列,虚拟机. 二.然后写代码,写demo,有哪些不懂的地方直接再去翻书或者google找资料,带着问题去学习,学的更快更扎实一些. 三.然后再看这个框架的应用场景,自己能否独立的写一些简单的项目,来验证自己的成果. 四.实际项目积累经验. RabbitMq 消息生产者向队列发送消息 (一) MQ分为消息生产者和消息消费者,这次做的主要是消息的生产

spring boot 2.0之使用spring boot

spring boot依赖 每一个spring boot的发型版本都包含了所依赖的版本,如果升级spring boot版本,其依赖也会同步更新升级.maven的用户可以通过继承spring-boot-starter-parent.其包含了一些合理的值的设置: 1. 默认设置的编译器为JDK 1.8 2. 源文件默认UTF-8编码 3. 从spring-boot-dependencies pom中继承的 Dependency Management版本信息,在使用的时候,可以忽略其具体的版本信息.

spring boot之从零开始开发自己的网站

概述 首先要感谢两位大神,该项目的想法来源自tale和MyBlog,本项目的想法. 做了一些改造,增加了一些功能和一些代码的重构,并且更换了博客主题. 关于项目,对于开发的练手项目,能够工程化,严谨一些. 关于文档,本文主要中从项目需求,项目设计的方式来阐述. 如何从零开始,使用springboot开发项目. 记录一些在开发过程中遇到的一些问题,总结开发技巧 接下来,会以需求和设计方式来阐述 效果图 首页展示 文章编辑 文章管理 项目需求 项目背景 对于刚学习springboot的同学,最好的就