pom.xml引入spring-boot-starter-mail

Spring Boot2.x集成了mail模块,在dependencies引入这个

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-mail</artifactId>
  4. </dependency>

application.yml配置

  1. spring:
  2. mail:
  3. # 163
  4. host: smtp.163.com
  5. port:
  6. username: yimcarson@163.com
  7. password: ************
  8. protocol: smtp
  9. default-encoding: UTF-8
  10. properties:
  11. mail.smtp.auth: true
  12. mail.smtp.starttls.enable: true
  13. mail.smtp.starttls.required: true
  14. mail.smtp.socketFactory.port: 465
  15. mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
  16. mail.smtp.socketFactory.fallback: false

其中spring.mail.host spring.mail.port spring.mail.username spring.mail.password不同邮箱的配置方法也不同

163邮箱

  1. spring:
  2. mail:
  3. host: smtp.163.com
  4. port:
  5. username: yimcarson@163.com
  6. password: ************

其中spring.mail.port不指定;spring.mail.password不是邮箱密码,需要登录mail.163.com,前往设置 客户端授权密码中获取的一个16个字符的密码,同时允许POP3/SMTP服务。

QQ邮箱

  1. spring:
  2. mail:
  3. host: smtp.qq.com
  4. port: 587
  5. username: yimcarson@qq.com
  6. password: ************

spring.mail.password不是QQ密码,登录mail.qq.com,前往设置 账户 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务开启POP3/SMTP服务获取一个16个字符的密码

Gmail邮箱

  1. spring:
  2. mail:
  3. host: smtp.gmail.com
  4. port: 465
  5. username: yimcarson@gmail.com
  6. password: ****************

spring.mail.password是Gmail的密码,但是要前往Google账户的安全性较低的应用的访问权限中允许不安全应用。

发送邮件

这是一个验证码模版邮件

service实现类

  1. import com.my.demo.project.service.MailService;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.beans.factory.annotation.Value;
  4. import org.springframework.mail.SimpleMailMessage;
  5. import org.springframework.mail.javamail.JavaMailSender;
  6. import org.springframework.mail.javamail.MimeMessageHelper;
  7. import org.springframework.mail.javamail.MimeMessagePreparator;
  8. import org.springframework.stereotype.Service;
  9. import org.thymeleaf.TemplateEngine;
  10. import org.thymeleaf.context.Context;
  11. import javax.mail.*;

  12. import javax.mail.internet.InternetAddress;

  13. import javax.mail.internet.MimeMessage;

  14. import java.util.Properties;

  15. import java.util.UUID;
  16. @Service

  17. public class MailServiceImpl implements MailService {
  18. <span class="token annotation punctuation">@Autowired</span>
  19. <span class="token keyword">private</span> JavaMailSender mailSender<span class="token punctuation">;</span>
  20. <span class="token comment">/**
  21.  * 用来发送模版邮件
  22.  */</span>
  23. <span class="token annotation punctuation">@Autowired</span>
  24. <span class="token keyword">private</span> TemplateEngine templateEngine<span class="token punctuation">;</span>
  25. <span class="token annotation punctuation">@Value</span><span class="token punctuation">(</span><span class="token string">"${spring.mail.username}"</span><span class="token punctuation">)</span>
  26. <span class="token keyword">private</span> String from<span class="token punctuation">;</span>
  27. <span class="token annotation punctuation">@Override</span>
  28. <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">send</span><span class="token punctuation">(</span>String to<span class="token punctuation">,</span> String subject<span class="token punctuation">,</span> String text<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  29. // SimpleMailMessage message = new SimpleMailMessage();

  30. // message.setFrom(from);

  31. // message.setTo(to);

  32. // message.setSubject(subject);

  33. // message.setText(text);

  34.     Context context <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Context</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  35.     context<span class="token punctuation">.</span><span class="token function">setVariable</span><span class="token punctuation">(</span><span class="token string">"project"</span><span class="token punctuation">,</span> <span class="token string">"demo"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  36.     context<span class="token punctuation">.</span><span class="token function">setVariable</span><span class="token punctuation">(</span><span class="token string">"author"</span><span class="token punctuation">,</span> <span class="token string">"yimcarson"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  37.     context<span class="token punctuation">.</span><span class="token function">setVariable</span><span class="token punctuation">(</span><span class="token string">"code"</span><span class="token punctuation">,</span> text<span class="token punctuation">)</span><span class="token punctuation">;</span>
  38.     String emailContent <span class="token operator">=</span> templateEngine<span class="token punctuation">.</span><span class="token function">process</span><span class="token punctuation">(</span><span class="token string">"mail"</span><span class="token punctuation">,</span> context<span class="token punctuation">)</span><span class="token punctuation">;</span>
  39.     MimeMessage message <span class="token operator">=</span> mailSender<span class="token punctuation">.</span><span class="token function">createMimeMessage</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  40.     MimeMessageHelper helper <span class="token operator">=</span> null<span class="token punctuation">;</span>
  41.     <span class="token keyword">try</span> <span class="token punctuation">{</span>
  42.         helper <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">MimeMessageHelper</span><span class="token punctuation">(</span>message<span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  43.         helper<span class="token punctuation">.</span><span class="token function">setFrom</span><span class="token punctuation">(</span>from<span class="token punctuation">)</span><span class="token punctuation">;</span>
  44.         helper<span class="token punctuation">.</span><span class="token function">setTo</span><span class="token punctuation">(</span>to<span class="token punctuation">)</span><span class="token punctuation">;</span>
  45.         helper<span class="token punctuation">.</span><span class="token function">setSubject</span><span class="token punctuation">(</span>subject<span class="token punctuation">)</span><span class="token punctuation">;</span>
  46.         helper<span class="token punctuation">.</span><span class="token function">setText</span><span class="token punctuation">(</span>emailContent<span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  47.     <span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">MessagingException</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  48.         e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  49.     <span class="token punctuation">}</span>
  50.     mailSender<span class="token punctuation">.</span><span class="token function">send</span><span class="token punctuation">(</span>message<span class="token punctuation">)</span><span class="token punctuation">;</span>
  51. <span class="token punctuation">}</span>
  52. }

templates模版

  1. <!DOCTYPE html>
  2. <html lang="en" xmlns:th="http://www.thymeleaf.org">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>yimcarson</title>
  6. <style>
  7. body {
  8. text-align: center;
  9. margin-left: auto;
  10. margin-right: auto;
  11. }
  12. #main {
  13. text-align: center;
  14. position: absolute;
  15. }
  16. </style>
  17. </head>
  18. <body>
  19. <div id="main">
  20. <h3>Welcome <span th:text="${project}"></span> -By <span th:text=" ${author}"></span></h3>
  21. Your Verification Code is
  22. <h2><span th:text="${code}"></span></h2>
  23. </div>
  24. </body>
  25. </html>

测试

  1. import com.my.demo.Application;
  2. import org.junit.Test;
  3. import org.junit.runner.RunWith;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.boot.test.context.SpringBootTest;
  6. import org.springframework.test.context.junit4.SpringRunner;
  7. import org.thymeleaf.TemplateEngine;
  8. import java.util.Date;

  9. import java.util.UUID;
  10. @RunWith(SpringRunner.class)

  11. @SpringBootTest(classes = {Application.class})

  12. public class MailServiceTest {

  13. @Autowired

  14. private MailService mailService;
  15. <span class="token annotation punctuation">@Test</span>
  16. <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">testSend</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  17. 	String to <span class="token operator">=</span> <span class="token string">"yimcarson@qq.com"</span><span class="token punctuation">;</span>
  18. 	mailService<span class="token punctuation">.</span><span class="token function">send</span><span class="token punctuation">(</span>to<span class="token punctuation">,</span> <span class="token string">"模板邮件"</span><span class="token punctuation">,</span> UUID<span class="token punctuation">.</span><span class="token function">randomUUID</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toUpperCase</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  19. <span class="token punctuation">}</span>
  20. }

结语

163 QQ这两个邮箱比较常用,至于Gmail……,如果服务器是阿里云香港或者国外、亚马逊这些的话可以正常使用,否则……,Couldn't connect to host, port: smtp.gmail.com, 465; timeout -1

原文地址:https://blog.csdn.net/yimcarson/article/details/84936440

Spring Boot笔记之邮件(spring-boot-starter-mail)的更多相关文章

  1. spring入门笔记-(一)、spring boot HelloWorld

    什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员 ...

  2. 【Spring学习笔记-0】Spring开发所需要的核心jar包

    spring开发所需要的核心jar 1. libs目录下的核心jar包: 2. common-logging-xxx.jar 来自为知笔记(Wiz) 附件列表

  3. 【Spring学习笔记-MVC-2】spring导出Excel

    说明: 1.结合Spring MVC实现Excel导出功能: 2. 在MVC配置文件中配置Excel视图解析器: 需要的jar包 以poi开头的jar包都是必须的 web.xml <?xml v ...

  4. 【Spring学习笔记-5】Spring中的抽象bean以及bean继承

    *.hl_mark_KMSmartTagPinkImg{background-color:#ffaaff;}*.hl_mark_KMSmartTagBlueImg{background-color:# ...

  5. 【Spring学习笔记-MVC-16】Spring MVC之重定向-解决中文乱码

    概述 spring MVC框架controller间跳转,需重定向,主要有如下三种: 不带参数跳转:形如:http://localhost:8080/SpringMVCTest/test/myRedi ...

  6. 【Spring学习笔记-MVC-15】Spring MVC之异常处理

    作者:ssslinppp       1. 描述 在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的.不可预知的异常需要处理 ...

  7. 【Spring学习笔记-MVC-14】Spring MVC对静态资源的访问

    作者:ssslinppp       参考链接: http://www.cnblogs.com/luxh/archive/2013/03/14/2959207.html  http://www.cnb ...

  8. 【Spring学习笔记-MVC-13】Spring MVC之文件上传

    作者:ssslinppp       1. 摘要 Spring MVC为文件上传提供了最直接的支持,这种支持是通过即插即用的MultipartResolve实现的.Spring使用Jakarta Co ...

  9. 【Spring学习笔记-MVC-12】Spring MVC视图解析器之ResourceBundleViewResolver

    场景 当我们设计程序界面的时候,中国人希望界面是中文,而美国人希望界面是英文. 我们当然希望后台代码不需改变,系统能够通过配置文件配置,来自己觉得是显示中文界面还是英文界面. 这是,Spring mv ...

随机推荐

  1. 【水滴石穿】react-native-video-project

    感觉这个是很有才华的博主,毕竟是可以在npm 包里面留后门的程序员 博主的gihtub关于这个项目的地址是:https://github.com/ikimiler/react-native-video ...

  2. redis是当前流行的nosql数据库

    redis是当前流行的nosql数据库,很多网站都用它来做缓存,今天我们来安装并配置下redis 二.安装并配置redis 1.安装redis sudo apt-get install redis-s ...

  3. ChaosBlade 发布对 C++ 应用混沌实验的支持

    前言 为满足 C++ 应用系统故障演练,阿里妈妈安全生产团队开源了 C++ 混沌实验执行器,填补了 C++ 应用混沌工程实验的空白,其遵循<混沌实验模型>,可通过 ChaosBlade 工 ...

  4. Codeforces 442B

    题目链接 B. Andrey and Problem time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  5. 2019-8-31-asp-dotnet-core-支持客户端上传文件

    title author date CreateTime categories asp dotnet core 支持客户端上传文件 lindexi 2019-08-31 16:55:58 +0800 ...

  6. python 类的创建

  7. PHPCMS快速建站系列之pc:get标签的应用

    GET标签使用方式如下: {pc:get sql="SELECT * FROM phpcms_member" cache="3600" page="$ ...

  8. 邀您共赴数据库学术顶会ICDE 2019——阿里云专场 零距离接触达摩院数据库“最强大脑”

    摘要: 当学术大家遇到技术大拿,会碰撞出怎样的火花?为进一步加深产学研学术交流,阿里云将于ICDE 2019大会期间(4月9日)举办以“云时代的数据库”为主题的技术专场(Workshop) 作为全球数 ...

  9. java读取properties文件总结

    一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResource ...

  10. android 重写系统进度条

    转载自http://blog.csdn.net/codingandroid/article/details/8495074 自定义progressbar现在要自定义一个等待的时候转动的小圈,相信大家也 ...