写点什么

SpringBoot 发送邮件

作者:
  • 2022 年 8 月 02 日
  • 本文字数:1820 字

    阅读完需:约 6 分钟

SpringBoot 发送邮件

文末源码

邮件协议基本知识


  • SMTP:简单邮件传输协议,用于发送邮件,默认端口 25

  • POP2: 邮局协议 2,用于接收邮件,默认端口 109,基本已废弃

  • pop3: 邮局协议 3,用于接收邮件,默认端口 110

  • IMAP:网络信息访问协议,用于接收邮件,默认端口 143,只下载邮件标题 收件人信息

以 QQ 设置中为例:

代码演示

第一步,新建项目 SpringBoot 工程。第二步,引入 maven 依赖发送邮件所需依赖,在 pom.xml 加入。

				<!--mail-->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-mail</artifactId>        </dependency>
复制代码

第三步,配置 application.properties 配置文件

spring.application.name=mail
spring.mail.host=smtp.qq.comspring.mail.username=xxx@qq.comspring.mail.password=your_password # 注意:这里是你的邮箱的第三方客户端密码,而不是邮箱的登录密码!spring.mail.default-encoding=UTF-8
复制代码

此处生成密码方法如下,点击邮箱设置,生成密码

发送带有照片的邮件

service

	// 将配置文件的username注入    @Value("${spring.mail.username}")    private String from;
@Autowired private JavaMailSender javaMailSender; /** * 发送带图片的邮件 * @param Id * @param to * @param subject * @param content * @param id * @throws MessagingException */ public void sendImgResourceMail(String to, String subject, String content, String Id, String id) { logger.info("发送带图片的邮件"); MimeMessage mailMessage = javaMailSender.createMimeMessage(); MimeMessageHelper helper = null; try { helper = new MimeMessageHelper(mailMessage , true);

helper.setTo(to); helper.setSubject(subject); helper.setText(content , true);
// 发 送 者 helper.setFrom(from);
// 添加图片 FileSystemResource srcPath = new FileSystemResource(new File(Id));
helper.addInline(Id , srcPath);
javaMailSender.send(mailMessage); // 发送邮件
} catch (MessagingException e) { logger.info("发送带图片的邮件失败"); } }

复制代码

测试


@Testpublic void sendImgResourceMail() throws MessagingException {		String srcPath = "F:\\img\\1.png";    String Id = "666";    String content = "<html><body><img src='cid:" + Id + "'/></body></html>";    mailService.sendImgResourceMail("xxx@163.com",                                    "Test",                                    content,                                    srcPath,                                    Id);}
复制代码


发送模板用例

				<!--mail模板-->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-thymeleaf</artifactId>        </dependency>
复制代码


<!doctype html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head>    <meta charset="UTF-8">    <title>邮件模板</title></head><body>    你好,感谢您的注册,这是一封验证邮件,请点击下面的链接完成注册,感谢您的支持!    <!--/*@thymesVar id="id" type=""*/-->    <a href="#" th:href="@{http://www.xxx.com/register/{id}(id=${id})}">激活账号</a></body></html>
复制代码

测试

   @Autowired    private TemplateEngine templateEngine;
@Test public void TestTemplateMail() throws MessagingException {
Context context = new Context(); context.setVariable("id", "999");
String emailContent = templateEngine.process("mailTemplate", context);
mailService.sendHtmlMail("xxx@qq.com","Test",emailContent);
}

复制代码

成功收到邮件:

仓库地址

Github 仓库地址: https://github.com/xmpjava/mail-java

Gitee 仓库地址: https://gitee.com/love-code-bear/mail

发布于: 2022 年 08 月 02 日阅读数: 29
用户头像

关注

在校大三学生一枚 2022.08.02 加入

喜欢学习编程,擅长技术栈JAVA

评论

发布
暂无评论
SpringBoot 发送邮件_开源_斯_InfoQ写作社区