本文参考spring官网email接口文档所写。

spring-email官方网址:https://docs.spring.io/spring/docs/5.1.8.RELEASE/spring-framework-reference/integration.html#mail

1:添加相关依赖

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.1.6.RELEASE</version></dependency>

2:先建一个邮箱收件人model

package com.dev.model.email;import java.io.Serializable;/*** Created on 2019-08-02 16:16.** @author zgq7*/
public class EmailModel implements Serializable {/*** 收件人姓名**/private String recieverName;/*** 收件人邮箱地址**/private String recieverEmailAddress;/*** 邮件主题**/private String emailTheme;/*** 邮件内容**/private String emailContent;public String getRecieverName() {return recieverName;}public void setRecieverName(String recieverName) {this.recieverName = recieverName;}public String getRecieverEmailAddress() {return recieverEmailAddress;}public void setRecieverEmailAddress(String recieverEmailAddress) {this.recieverEmailAddress = recieverEmailAddress;}public String getEmailTheme() {return emailTheme;}public void setEmailTheme(String emailTheme) {this.emailTheme = emailTheme;}public String getEmailContent() {return emailContent;}public void setEmailContent(String emailContent) {this.emailContent = emailContent;}
}

3:编写一个邮箱工具类

package com.dev.utils.email;import com.dev.model.email.EmailModel;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;/*** Created on 2019-08-02 16:06.** @author zgq7*/
public class MailSendUtils {private static final Logger logger = LoggerFactory.getLogger(MailSendUtils.class);/*** 发送者地址**/private static String posterAdress = "xxx@qq.com";/*** 发送者姓名**/private static final String posterName = "xxx";@Autowiredprivate JavaMailSender javaMailSender;@Autowiredprivate JavaMailSenderImpl javaMailSenderImpl;/*** 文本发送**/public void sendEmailAsText(final EmailModel emailModel) {MimeMessagePreparator mimeMessagePreparator = mimeMessage -> {mimeMessage.setFrom(posterAdress);mimeMessage.setRecipients(Message.RecipientType.TO, emailModel.getRecieverEmailAddress());mimeMessage.setText("<html><body>"+ "hello:" + emailModel.getRecieverName()+ "<br>" + "msg:" + emailModel.getEmailContent()+ "<br>" + "from :" + posterName+ "</body></html>");};try {this.javaMailSender.send(mimeMessagePreparator);logger.info("邮箱已返送至[{}]邮箱!", emailModel.getRecieverName());} catch (MailException e) {logger.error("邮箱异常:{}", e);}}/*** html 网页发送* 该方法为同步方法**/public void sendEmailAsSysExceptionHtml(final EmailModel emailModel) {MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();MimeMessageHelper mimeMessageHelper;try {mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);mimeMessageHelper.setFrom(posterAdress);mimeMessageHelper.setTo(emailModel.getRecieverEmailAddress());mimeMessageHelper.setText("<!DOCTYPE html>\n" +"<html>\n" +"\t<head>\n" +"\t\t<meta charset=\"UTF-8\">\n" +"\t\t<title></title>\n" +"\t</head>\n" +"\t<style>\n" +"\t\tbody,\n" +"\t\ttable,\n" +"\t\ttbody,\n" +"\t\ttr {\n" +"\t\t\tbackground-color: aquamarine;\n" +"\t\t\tbackground-size: 100%;\n" +"\t\t}\n" +"\t</style>\n" +"\n" +"\t<body>\n" +"\t\t<table border=\"solid 2 px\" align=\"center\" style=\"text-align: center;\">\n" +"\t\t\t<tbody>\n" +"\t\t\t\t<tr>\n" +"\t\t\t\t\t<td width=\"200px\" bgcolor=\"coral\">时间</td>\n" +"\t\t\t\t\t<td width=\"80%\" bgcolor=\"azure\">" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "</td>\n" +"\t\t\t\t</tr>\n" +"\t\t\t\t<tr>\n" +"\t\t\t\t\t<td width=\"200px\" bgcolor=\"coral\">信息</td>\n" +"\t\t\t\t\t<td width=\"80%\" bgcolor=\"azure\">" + "测试" + "</td>\n" +"\t\t\t\t</tr>\n" +"\t\t\t\t<tr>\n" +"\t\t\t\t\t<td width=\"200px\" bgcolor=\"coral\">堆栈</td>\n" +"\t\t\t\t\t<td width=\"80%\" bgcolor=\"azure\" style=\"text-align: left;\">" + emailModel.getEmailContent() + "</td>\n" +"\t\t\t\t</tr>\n" +"\t\t\t</tbody>\n" +"\t\t</table>\n" +"\t</body>\n" +"\n" +"</html>", true);this.javaMailSender.send(mimeMessage);logger.info("邮箱已返送至[{}]邮箱!", emailModel.getRecieverName());} catch (MessagingException e) {e.printStackTrace();} catch (MailException e) {logger.error("邮箱异常:{}", e);}}}

notice3.1:可自行设置文本发送api、html发送api、图片发送api等。我的工具包中只写了文本发送和html发送两种格式的api。

4:在IOC中注册EmailUtils的bean

package com.dev.config;
import com.dev.utils.email.MailSendUtils;

/*** Created by zgq7 on 2019/6/6.* 注册一些bean进入ioc**/
@Configuration
public class BeanRegistryCenterConfig {

    /*** 邮箱工具类 bean 注册**/@Beanpublic MailSendUtils mailSendUtils() {return new MailSendUtils();}}

5:在Application.xml中添加一下信息

spring.mail.host=smtp.qq.com
spring.mail.port=587
spring.mail.username=你的qq@qq.com
spring.mail.password=xxxxx
spring.mail.protocol=smtp
spring.mail.default-encoding=UTF-8

notice1:spring.mail.usernam,是你的qq邮箱地址

notice2:spring.mail.password,不要用真正的qq邮箱密码,而是qq邮箱第三方服务授权码

下面是获取qq邮箱第三方服务授权码的操步骤:

5.1:登录qq邮箱,进入首页,点击设置按钮

 5.2:点击账户设置

   并拉到最下面点击我圈中的开启按钮

  然后会弹出一个小框提示你发信息,发就行了,发送之后点击验证会收到授权码

  除了spring.mail.username、spring.mail.password 两项要换成自己的 ,其他的和我一样就行;

6:进行邮件发送测试

6.1:文本发送测试

    /*** Java Mail 文本发送**/@Testpublic void EmaiTest() {EmailModel emailModel = new EmailModel();emailModel.setEmailTheme("测试");emailModel.setRecieverName("测试");emailModel.setEmailContent("测试");emailModel.setRecieverEmailAddress("xxx@qq.com");mailSendUtils.sendEmailAsText(emailModel);}

发送成功后:

目标邮箱收到的邮件:

6.2:html发送测试

    /*** Java Mail 网页发送**/@Testpublic void EmailTest2() throws MessagingException, InterruptedException {EmailModel emailModel = new EmailModel();emailModel.setEmailTheme("测试");emailModel.setRecieverName("测试");emailModel.setEmailContent("测试");emailModel.setRecieverEmailAddress("xxx@qq.com");mailSendUtils.sendEmailAsSysExceptionHtml(emailModel);}

目标邮箱收到的邮件:

  这个展示效果可以自己设置。

7:注意点:发送邮件者的邮箱地址为qq邮箱,否则会QQ邮箱认证报错。而接收者邮箱可以为其他的邮箱,如企业邮箱、网易邮箱等。

看过的点个赞好不好啊。

转载于:https://www.cnblogs.com/zgq7/p/11314895.html

springboot2.x整合JavaMail以qq邮箱发送邮件相关推荐

  1. Java基于JavaMail实现向QQ邮箱发送邮件遇到的问题

    最近使用Java基于JavaMail实现向QQ邮箱发送邮件老是发送失败,在网上搜了下,终于找到原因,记录下. 参考:http://www.jb51.net/article/78405.htm 网上还有 ...

  2. 基于java mail实现简单的QQ邮箱发送邮件

    刚学习到java邮件相关的知识,先写下这篇博客,方便以后翻阅学习. -----------------------------第一步 开启SMTP服务 在 QQ 邮箱里的 设置->账户里开启 S ...

  3. Spring Boot 整合163或者qq邮箱发送验证码

    前记 最近做的项目中注册功能要用到验证码,本来想用阿里云的短信服务,但是有点小贵,就另辟捷径,选择了用邮箱来发送验证码.记录一下整合过程,也希望能帮助一些有需要的人. 正文 1.Spring Boot ...

  4. java发送qq邮箱不成功_java,_使用QQ邮箱发送邮件遇到的问题,java - phpStudy

    使用QQ邮箱发送邮件遇到的问题 代码是在网上抄的别人今年写的,但是我运行起来一直报错,也不知道什么原因,请大神帮忙指点一下::谢谢!!! 以下是我的代码 public class Sendmail8 ...

  5. legend3---lavarel中使用qq邮箱发送邮件

    legend3---lavarel中使用qq邮箱发送邮件 一.总结 一句话总结: 第一步:配置邮箱做服务器,比如qq邮箱,网易163邮箱 第二步:配置lavarel的配置文件 第三部:写邮件发送代码就 ...

  6. python3利用smtplib通过qq邮箱发送邮件

    前言 本文主要给大家介绍了关于python3 smtplib通过qq邮箱发送邮件的相关内容, smtplib模块是smtp简单邮件传输协议客户端的实现,为了通用性,有时候发送邮件的时候要带附件或图片, ...

  7. php模拟登录qq邮箱_PHP 利用QQ邮箱发送邮件的实现

    这篇文章主要介绍了关于PHP 利用QQ邮箱发送邮件的实现,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下在 PHP 应用开发中,往往需要验证用户邮箱.发送消息通知,而使用 PHP 内置的 ...

  8. Java mail使用QQ邮箱发送邮件配置方案

    Java mail使用QQ邮箱发送邮件配置方案 java mail配置了QQ邮箱作为服务器发送邮件,结果导致出现503异常: Authentication failed; nested excepti ...

  9. python 用QQ邮箱发送邮件

    SMTP 是发送邮件的协议.Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮箱. Python对SMTP支持有smtplib 和email 两个模块,email负责构造 ...

  10. java模拟登录qq邮箱_使用Java实现qq邮箱发送邮件

    本文实例为大家分享了Java操作qq邮箱发送邮件的具体代码,供大家参考,具体内容如下 今天尝试了使用QQ邮箱的POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务来进行发送 ...

最新文章

  1. TensorRT-优化-原理
  2. CF(439E - Devu and Birthday Celebration)莫比乌斯容斥
  3. 成功解决 .Quit() File COMObject InternetExplorer.Application, line 2, in Quit pywintypes.com_error
  4. java中elements_Java中的提供程序elements()方法
  5. 前端面试题(附上自己的回答)
  6. 限制在同一台电脑上只允许有一个用户登录
  7. array.slice_Ruby中带有示例的Array.slice()方法
  8. windows离线安装grunt_chrome火狐离线安装包下载
  9. c语言实现路由功能,前端路由的两种实现方式,内附详细代码
  10. 华为Mate 40 Pro概念渲染图曝光:首发屏下摄像头技术?
  11. leetcode @python 124. Binary Tree Maximum Path Sum
  12. iOS - Swift NSUserDefaults 数据存储
  13. python 给文本加下划线_untiy3dUGUI实现text文本下划线
  14. Swift 2.0 自定义cell和不同风格的cell
  15. android smb同步,SMBsync安卓下最好的同步备份工具
  16. AutomateTheBoringStuffWithPython
  17. 重装系统后怎么恢复数据?看完你就了解了
  18. 【前端前沿看点】React和Vue深度对比
  19. Should be compatible with WP_Widget::widget($args, $instance)
  20. Ubuntu 18.04 安装 NVIDIA 显卡驱动

热门文章

  1. alter table move
  2. C++网络编程实例2(socket)
  3. IP地址冲突导致网络故障如何排查问题?
  4. Linux下用Java获取本机IP
  5. Unreal Engine 4 C++ UCLASS构造函数易出错分析
  6. 《中国人工智能学会通讯》——第12章 12.1 新世纪知识工程—— 在哪里跨越
  7. 《树莓派开发实战(第2版)》——1.2 封装树莓派
  8. Linux网络基础番外篇(IP、MAC、TCP)
  9. WPF之DatePicker使其只能选择日期,不能输入日期
  10. Windows XP搜索功能 包含文字 搜索不到内容的解决办法