发送邮件

步骤:

1、邮箱设置

​ -启用客户端SMTP服务

2、Spring Email

​ -导入jar包

​ -邮箱参数设置

​ -使用JavaMailSender发送邮件

3、模板引擎

​ -使用Thymeleaf发送HTML邮件

启用smtp服务

SMTP的全称是“SimpleMailTransferProtocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地;
SMTP服务器就是遵循SMTP协议的发送邮件服务器,不同邮件服务商均有对应的smtp服务器地址,并且这个地址会提供给大家,方便大家使用Foxmail与outlook等专业邮件管理软件时可以用的上。

导入jar包

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

邮箱参数配置

# MailProperties
spring.mail.host=smtp.sina.com
spring.mail.port=465
spring.mail.username=a3431356xx@sina.com   //邮箱地址
spring.mail.password=xxxxxxx               //邮箱密码
spring.mail.protocol=smtps                    

使用JavaMailSender发送邮件

分三步 1、发送人 2、收件人 3、邮件标题和内容

  • 编写一个MailClient工具类用来发送邮件
  • 开启logger日志
  • 注入JavaMailSender(由Spring容器管理)
  • 发送人username注入到Bean中
  • 编写一个公有的方法实现发送邮件,传入参数收件人,标题和内容
  • 构建MinmeMessage
  • 设置发件人,收件人,标题和内容 setText加上第二个参数true表示支持html文本
package com.js.community.utils;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.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;@Component
public class MailClient {private static final Logger logger = LoggerFactory.getLogger(MailClient.class);@Autowiredprivate JavaMailSender javaMailSender;@Value("${spring.mail.username}")private String from;public void sendMail(String to, String subject, String content) {try {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper mimeMessageHelper=new MimeMessageHelper(mimeMessage);mimeMessageHelper.setFrom(from);mimeMessageHelper.setTo(to);mimeMessageHelper.setSubject(subject);mimeMessageHelper.setText(content,true);javaMailSender.send(mimeMessageHelper.getMimeMessage());} catch (MessagingException e) {logger.error("发送邮件失败:" + e.getMessage());}}}

测试

@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = CommunityApplication.class)
public class MailClientTest {@Autowiredprivate MailClient mailClient;@Testpublic void testTextMail() {mailClient.sendMail("3431356162@qq.com", "发送邮件测试", "Welcome.");}

使用Thymeleaf发送HTML邮件

  • 新建一个mail模板

    <!doctype html>
    <html lang="en"   xmlns:th="http://www.thymeleaf.org">
    <head><meta charset="utf-8"><link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/><title>牛客网-激活账号</title>
    </head>
    <body><div><p><b>xxx@xxx.com</b>, 您好!</p><p>您正在注册牛客网, 这是一封激活邮件, 请点击 <a href="#">http://www.nowcoder.com/activation/abcdefg123456.html</a>,激活您的牛客账号!</p></div>
    </body>
    </html>
    

测试

  • 主动调用Template模板引擎
  • 给模板传参用context,设置其参数
  • 调用模板引擎的proces的方法,指定其方法和数据
  • 接受其生成的动态网页即字符串
@Test
public void testHtmlMail() {Context context=new Context();String content=templateEngine.process("/mail/activation",context);mailClient.sendMail("3431356162@qq.com", "发送邮件测试",content);
}

debug

javaMailSender.send(mimeMessageHelper.getMimeMessage());

这个方法必须进行try catch 不能抛出

try catch是直接处理,处理完成之后程序继续往下执行,throw则是将异常抛给它的上一级处理,程序便不往下执行了。

2.1 JavaMailSender发送邮件相关推荐

  1. Spring Boot中使用JavaMailSender发送邮件

    相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送.在Spring Boot的Starter模块中也为此提供了自动化配置.下面通过实例看看 ...

  2. java sender_Spring Boot用JavaMailSender发送邮件方法

    JavaMailSender用来发邮件了我们这里整理一些关于使用JavaMailSender发邮件的例子希望下面的文章能够为各位提供帮助的哦. 相信使用过Spring的众多开发者都知道Spring提供 ...

  3. SpringBoot使用JavaMailSender发送邮件:com.sun.mail.smtp.SMTPSendFailedException: 451 MI:SFQ 163 smtp7

    SpringBoot使用JavaMailSender发送邮件时,报错如下: 2020-08-08 07:32:21,237 ERROR --- [http-nio-8080-exec-1] cn.co ...

  4. 使用spring的JavaMailSender发送邮件

    自己的代码魔改太多起不到简单易懂的效果,我还是直接上原来的人的代码吧. 代码结构如下: 1.pom.xml中加入以下依赖: <dependency><groupId>org.s ...

  5. 记JavaMailSender发送邮件账户连接超时问题

    使用场景,公司要用飞书邮箱做一个公共邮箱用来发送邮件,qq邮箱和163邮箱这种有对外授权码的很容易实现,但是遇到了飞书这种提供公众邮箱需要配置端口的时候,一直得不到transport的响应,弄了半天才 ...

  6. javaMailSender 发送邮件设置昵称

    messageHelper.setFrom("昵称1<a@b.com>");messageHelper.setTo("昵称2<a@b.com>&q ...

  7. android javamail获取邮件太多太慢_结合 Spring 发送邮件的4种正确姿势,你知道几种?...

    Java程序猿阿谷:面试字节跳动三轮凉凉,内推4面终拿下抖音offer(Java后台研发)​zhuanlan.zhihu.com 一.前言 测试所使用的环境 测试使用的环境是企业主流的SSM 框架即 ...

  8. java 发送邮件_SpringBoot 2.1.5发送验证码邮件

    SpringBoot 2.1.5发送验证码邮件 编者: wRitchie(吴理琪) 来源:http://bj9420.com Spring的开发者都知道Spring提供了非常好用的 JavaMailS ...

  9. SpringBoot学习历程(十一):SpringBoot2.X集成mail发送邮件

    SpringBoot学习历程(十一):SpringBoot2.X集成mail发送邮件 前言 1. 引入依赖 2. 设置邮件配置信息 3. 发送邮件 3.1 发送普通文本邮件 3.2 发送HTML格式内 ...

  10. SpringBoot发送邮件(二)发送包含图片的邮件

    前言:使用发邮件这个功能不难,但是也有一些坑,下面我把开发邮件功能总结了一下分享给大家,同时为了避免篇幅过长,导致大家看的不仔细或看一半不想看了,我将这个功能细分了一下,写了好几篇供大家各取所需. S ...

最新文章

  1. ecshop 商品颜色尺寸仿淘宝选择功能教程(2.7.0版本)
  2. 2021全球产品经理大会蓄势待发!
  3. 动态加载JS脚本的4种方法
  4. JAVA设计模式之装饰模式
  5. SAP Spartacus OccEndpointsService单元测试之getBaseEndpoint
  6. html2canvas关于图片不能正常截取
  7. 在英特尔® 凌动™ 处理器上将 OpenGL* 游戏移植到 Android* (第一部分)
  8. kohana php,[php框架]kohana中文译本.pdf
  9. iOS禁止输入emoji表情
  10. android最简单的更换主题,教你更换Android手机主题
  11. NSString类中三个用于获取子字符串的方法:
  12. 深入理解 GraphQL
  13. 分布式定时任务之3:elasticjob状态一直是分片待调整
  14. 深度装机大师一键重装_深度装机大师一键重装软件
  15. 如何避免IE浏览器自动升级到版本11
  16. 我国大部地区遭罕见寒潮 23省区应急响应
  17. 水管工游戏——dfs
  18. Golang 基础:原生并发 goroutine channel 和 select 常见使用场景
  19. Agilent安捷伦34401A|34461A|3458a数字万用表软件NS-Multimeter
  20. 高德地图的基础使用(一)显示地图

热门文章

  1. 2021年10年后端开发程序员最新《C/C++Linux 服务器开发》学习路线总结,建议收藏
  2. 投屏索尼电视显示访问服务器,索尼电视投屏如何设置 苹果手机投屏索尼电视...
  3. php报错_STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Admin/df12aa1edf6tt330187a6514aae4fda4.php
  4. Beaglebone Black–GPIO 高低电平控制 LED 灯
  5. cpython-36m-x86_64-linux-gnu.so undefined symbol玄学解决
  6. 星巴克与阿里巴巴合作咖啡外卖
  7. php jquery 时间轴,jquery时间轴
  8. 新人上路,以菜鸟之名,对现在已学以及将来要学的进行一个简单的梳理,希望多多指教
  9. c语言句子首单词大写,C语言单词开头大写.docx
  10. 【SQL】获取最近一周日期列表