热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

SpringBoot配置发送Email的示例代码

本文介绍了SpringBoot配置发送Email,分享给大家,具体如下: 引入依赖 在 pom.xml 文件中引入邮件配置:

本文介绍了SpringBoot配置发送Email,分享给大家,具体如下:

引入依赖

在 pom.xml 文件中引入邮件配置:


  org.springframework.boot
  spring-boot-starter-mail

配置文件

# JavaMailSender 邮件发送的配置
spring.mail.host=smtp.163.com
spring.mail.username=用户163邮箱
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

注意:若使用QQ邮箱发送邮件,则需要修改为spring.mail.host=smtp.qq.com,同时spring.mail.password改为QQ邮箱的授权码。

QQ邮箱->设置->账户->POP3/SMTP服务:开启服务后会获得QQ的授权码

这里写图片描述 

但是真正运行程序时,还是会爆 535 认证失败。

这里写图片描述 

解决方案:因为JDK1.8中jre\lib\security中两个 jar 包替换的缘故。将下载后的local_policy.jar和US_export_policy.jar替换到JDK1.8的jre\lib\security文件夹即可。

地址:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

发送简单文本邮件

贴 Java 代码:

@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles("163")
public class EmailTest {

  @Autowired
  private JavaMailSender mailSender; //自动注入的Bean

  @Value("${spring.mail.username}")
  private String Sender; //读取配置文件中的参数

  @Test
  public void sendSimpleMail() throws Exception {
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom(Sender);
    message.setTo(Sender); //自己给自己发送邮件
    message.setSubject("主题:简单邮件");
    message.setText("测试邮件内容");
    mailSender.send(message);
  }
}

发送Html邮件

java 代码:

  @Test
  public void sendHtmlMail() {
    MimeMessage message = null;
    try {
      message = mailSender.createMimeMessage();
      MimeMessageHelper helper = new MimeMessageHelper(message, true);
      helper.setFrom(Sender);
      helper.setTo(Sender);
      helper.setSubject("标题:发送Html内容");

      StringBuffer sb = new StringBuffer();
      sb.append("

大标题-h1

") .append("

红色字

") .append("

右对齐

"); helper.setText(sb.toString(), true); } catch (Exception e) { e.printStackTrace(); } mailSender.send(message); }

发送带附件的邮件

java 代码:

  @Test
  public void sendAttachmentsMail() {
    MimeMessage message = null;
    try {
      message = mailSender.createMimeMessage();
      MimeMessageHelper helper = new MimeMessageHelper(message, true);
      helper.setFrom(Sender);
      helper.setTo(Sender);
      helper.setSubject("主题:带附件的邮件");
      helper.setText("带附件的邮件内容");
      //注意项目路径问题,自动补用项目路径
      FileSystemResource file = new FileSystemResource(new File("src/main/resources/static/image/picture.jpg"));
      //加入邮件
      helper.addAttachment("图片.jpg", file);
    } catch (Exception e){
      e.printStackTrace();
    }
    mailSender.send(message);
  }

发送带静态资源的邮件

java 代码:

  @Test
  public void sendInlineMail() {
    MimeMessage message = null;
    try {
      message = mailSender.createMimeMessage();
      MimeMessageHelper helper = new MimeMessageHelper(message, true);
      helper.setFrom(Sender);
      helper.setTo(Sender);
      helper.setSubject("主题:带静态资源的邮件");
      //第二个参数指定发送的是HTML格式,同时cid:是固定的写法
      helper.setText("带静态资源的邮件内容 图片:", true);

      FileSystemResource file = new FileSystemResource(new File("src/main/resources/static/image/picture.jpg"));
      helper.addInline("picture",file);
    } catch (Exception e){
      e.printStackTrace();
    }
    mailSender.send(message);
  }

发送模板邮件

在Spring Boot中也能使用模板引擎来实现模板化的邮件发送。关于模板邮件,SpringBoot 原本是支持 velocity,在 1.4 版本后又抛弃了 velocity,暂时只支持 freemaker。

引入 freemaker 依赖:

   
     org.springframework.boot
     spring-boot-starter-freemarker
   

java 代码:

  @Autowired
  private FreeMarkerConfigurer freeMarkerConfigurer; //自动注入

  @Test
  public void sendTemplateMail(){
    MimeMessage message = null;
    try {
      message = mailSender.createMimeMessage();
      MimeMessageHelper helper = new MimeMessageHelper(message, true);
      helper.setFrom(Sender);
      helper.setTo(Sender);
      helper.setSubject("主题:模板邮件");

      Map model = new HashedMap();
      model.put("username", "zggdczfr");

      //修改 application.properties 文件中的读取路径
//      FreeMarkerConfigurer cOnfigurer= new FreeMarkerConfigurer();
//      configurer.setTemplateLoaderPath("classpath:templates");
      //读取 html 模板
      Template template = freeMarkerConfigurer.getConfiguration().getTemplate("mail.html");
      String html = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
      helper.setText(html, true);
    } catch (Exception e) {
      e.printStackTrace();
    }
    mailSender.send(message);
  }

效果截图

这里写图片描述

项目参考地址:https://github.com/FunriLy/springboot-study/tree/master/%E6%A1%88%E4%BE%8B6

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
author-avatar
Hongquan_Yang
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有