当前位置: 首页 > news >正文

Spring Boot中实现发送文本、带附件和HTML邮件

SpringBoot实现发送邮箱

在这里插入图片描述

引言

在现代应用程序中,电子邮件通常是不可或缺的一部分。在Spring Boot中,你可以轻松地实现发送不同类型的邮件,包括文本、带附件和HTML邮件。本博客将向你展示如何使用Spring Boot发送这些不同类型的电子邮件。

步骤一:导入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency>

步骤二:配置邮箱信息

mail:# 邮件 SMTP 服务器的主机名host: smtp.qq.com# 用于登录 SMTP 服务器的邮箱地址username: 1111111@qq.com# 用于登录 SMTP 服务器的邮箱密码或授权码password: abcdefghijklmnopqrstuvwxyz# SMTP 服务器的端口port: 587# 是否启用 SMTP 认证,通常应设置为 truesmtpAuth: true# 是否启用 STARTTLS 安全传输协议,通常应设置为 truesmtpStarttlsEnable: true# 是否要求使用 STARTTLS 安全传输协议,通常应设置为 truesmtpStarttlsRequired: true# 默认编码defaultEncoding: UTF-8

步骤三:邮箱配置类

@Data
//配置属性文件
@Component
//说明配置文件属性的头部
@ConfigurationProperties(prefix = "mail")
public class MailConfig {private String host;private String username;private String password;private Integer port;private String smtpAuth;private String smtpStarttlsEnable;private String smtpStarttlsRequired;private String defaultEncoding;@Beanpublic JavaMailSender javaMailSender() {//邮箱发送对象JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();javaMailSender.setHost(host);javaMailSender.setPort(port);javaMailSender.setUsername(username);javaMailSender.setPassword(password);javaMailSender.setDefaultEncoding(defaultEncoding);// 配置其他属性,如协议、调试等,根据需要Properties properties = new Properties();properties.setProperty("mail.smtp.auth", smtpAuth);properties.setProperty("mail.smtp.starttls.enable", smtpStarttlsEnable);properties.setProperty("mail.smtp.starttls.required", smtpStarttlsRequired);javaMailSender.setJavaMailProperties(properties);return javaMailSender;}
}

步骤四:创建邮箱工具类

这里的发送人必须设置不然会报异常:501 Mail from address must be same as authorization user.

@Component
public class MailUtils {@Value("${mail.username}")private String username;@Resourceprivate JavaMailSender javaMailSender;/*** 邮箱发送** @param to      收信人* @param title   邮箱标题* @param content 邮箱内容*/public void sendMail(String to, String title, String content) {//邮箱消息对象SimpleMailMessage simpleMailMessage = new SimpleMailMessage();simpleMailMessage.setFrom(username);//发送人simpleMailMessage.setTo(to);//收件人simpleMailMessage.setSubject(title);//邮箱标题simpleMailMessage.setText(content);//邮箱内容//实现发送邮箱javaMailSender.send(simpleMailMessage);}/*** 群发邮箱** @param toList  收信人集合* @param title   邮箱标题* @param content 邮箱内容*/public void sendEmailToMultipleRecipients(List<String> toList, String title, String content) {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(username);//发送人message.setTo(toList.toArray(new String[0]));message.setSubject(title);message.setText(content);javaMailSender.send(message);}/*** 发送HTML邮箱** @param to       收信人* @param title    邮箱标题* @param text     HTML内容* @param filePath 文件路径* @throws MessagingException 邮箱异常*/public void sendEmailWithAttachment(String to, String title, String text, String filePath) throws MessagingException {MimeMessage message = javaMailSender.createMimeMessage();message.setFrom(username);//发送人MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setTo(to);helper.setSubject(title);helper.setText(text);FileSystemResource file = new FileSystemResource(new File(filePath));helper.addAttachment(FileUtil.getName(filePath), file);javaMailSender.send(message);}/*** 发送HTML邮箱** @param to    收信人* @param title 邮箱标题* @param text  HTML内容* @param file  文件* @throws MessagingException 邮箱异常*/public void sendEmailWithAttachment(String to, String title, String text, File file) throws MessagingException {MimeMessage message = javaMailSender.createMimeMessage();message.setFrom(username);//发送人MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setTo(to);helper.setSubject(title);helper.setText(text);helper.addAttachment(FileUtil.getName(file), file);javaMailSender.send(message);}/*** 发送HTML邮箱** @param to          收信人* @param title       邮箱标题* @param htmlContent HTML内容* @throws MessagingException 邮箱异常*/public void sendHtmlEmail(String to, String title, String htmlContent) throws MessagingException {MimeMessage message = javaMailSender.createMimeMessage();message.setFrom(username);//发送人MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setTo(to);helper.setSubject(title);helper.setText(htmlContent, true); // 设置为true表示HTML内容javaMailSender.send(message);}
}

通过使用Spring Boot和JavaMailSender,你可以轻松地实现发送文本、带附件和HTML邮件的功能。这些示例可以帮助你在你的应用程序中集成邮件发送功能,以便满足不同类型的邮件需求

http://www.lryc.cn/news/187278.html

相关文章:

  • MySQL5.7版本与8.0版本在CentOS系统安装
  • 【gitlab】从其他仓库创建项目
  • 【ARM CoreLink 系列 6 -- DMC-400控制器简介】
  • 在 Azure 中开发云原生应用程序:工具和技巧
  • 【Redis】基础数据结构-字典
  • 平板第三方电容笔怎么样?便宜的ipad触控笔推荐
  • pytorch_神经网络构建3
  • 遗传算法入门笔记
  • 【golang】go 返回参数 以及go中 裸返
  • elasticsearch深度分页问题
  • 32、Flink table api和SQL 之用户自定义 Sources Sinks实现及详细示例
  • Java练习题-用冒泡排序法实现数组排序
  • 【SV中的多线程fork...join/join_any/join_none】
  • 翻译:网站整站翻译 / 网站国际化 / 极简实现
  • 深度森林(deep-forest)安装
  • ping.pe ping 检测IP全球延迟
  • nodejs 16版本
  • NSSCTF做题(7)
  • 【GIT版本控制】--高级分支策略
  • 【Qt控件之QDialog】使用及技巧
  • Transformer预测 | Python实现基于Transformer的股票价格预测(tensorflow)
  • spark sql如何行转列
  • Prompt-Tuning(一)
  • 域信息收集
  • MySQ 学习笔记
  • pdf文档内容提取pdfplumber、PyPDF2
  • 运算符
  • 利用freesurfer6进行海马分割的环境配置和步骤,以及获取海马体积
  • haproxy使用
  • 轻松实现时间录入自由!如何在Microsoft Word中轻松插入格式化的日期和时间