厦门专业制作网站手机网站如何生成app

张小明 2026/3/2 23:12:28
厦门专业制作网站,手机网站如何生成app,做网站教程 简书,郑州餐饮 网站建设一、知识点背景 在 SpringBoot 项目中#xff0c;邮件发送是常见功能#xff08;如注册通知、告警推送#xff09;#xff0c;但单文本邮件无法满足复杂场景#xff08;如带样式的通知、多附件报表#xff09;。本文详解SpringBoot 3.x整合JavaMailSender实现多收件人 …一、知识点背景在 SpringBoot 项目中邮件发送是常见功能如注册通知、告警推送但单文本邮件无法满足复杂场景如带样式的通知、多附件报表。本文详解SpringBoot 3.x整合JavaMailSender实现多收件人 HTML 模板 附件的完整流程并解决实际开发中的常见问题。二、学习过程 步骤图文并茂步骤 1引入核心依赖pom.xml在 SpringBoot 项目中需引入邮件和模板引擎Thymeleaf依赖xml!-- SpringBoot邮件核心依赖 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-mail/artifactId /dependency !-- Thymeleaf用于HTML邮件模板 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-thymeleaf/artifactId /dependency步骤 2配置邮箱参数application.yml以 QQ 邮箱为例其他邮箱如网易 / 企业邮箱仅需修改服务器地址yamlspring: mail: # QQ邮箱SMTP服务器地址 host: smtp.qq.com # SMTP端口SSL加密 port: 465 # 发件人邮箱 username: 你的QQ邮箱qq.com # 注意不是QQ密码是邮箱“授权码”需在QQ邮箱设置中开启 password: 你的QQ邮箱授权码 # 加密方式SSL protocol: smtps properties: mail: smtp: auth: true starttls: enable: true required: true图 1QQ 邮箱 “POP3/SMTP 服务” 开启界面此处建议插入截图QQ 邮箱→设置→账户→开启 POP3/SMTP 服务的界面步骤 3封装通用邮件工具类实现多收件人、附件、HTML 模板的复用工具类java运行package com.example.mail.utils; import jakarta.mail.MessagingException; import jakarta.mail.internet.MimeMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component; import org.thymeleaf.TemplateEngine; import org.thymeleaf.context.Context; import java.io.File; /** * SpringBoot邮件发送工具类支持多收件人、HTML模板、附件 */ Component public class MailSendUtils { private final JavaMailSender mailSender; private final TemplateEngine templateEngine; // 构造注入Spring推荐方式 public MailSendUtils(JavaMailSender mailSender, TemplateEngine templateEngine) { this.mailSender mailSender; this.templateEngine templateEngine; } /** * 发送带HTML模板多附件的邮件 * param to 收件人列表如{user1qq.com, user2163.com} * param subject 邮件主题 * param templateName Thymeleaf模板名如emailTemplate * param context 模板参数 * param attachments 附件列表 */ public void sendTemplateMailWithAttach( String[] to, String subject, String templateName, Context context, File[] attachments ) throws MessagingException { // 1. 创建MimeMessage支持多部分内容 MimeMessage mimeMessage mailSender.createMimeMessage(); // 2. 初始化Helpertrue支持多部分UTF-8避免中文乱码 MimeMessageHelper helper new MimeMessageHelper(mimeMessage, true, UTF-8); // 3. 设置邮件基础信息 helper.setFrom(你的QQ邮箱qq.com); // 发件人 helper.setTo(to); // 多收件人 helper.setSubject(subject); // 主题 // 4. 渲染Thymeleaf模板为HTML内容 String htmlContent templateEngine.process(templateName, context); helper.setText(htmlContent, true); // true内容是HTML // 5. 添加多个附件 if (attachments ! null attachments.length 0) { for (File file : attachments) { helper.addAttachment(file.getName(), file); } } // 6. 发送邮件 mailSender.send(mimeMessage); } }步骤 4编写 HTML 邮件模板在resources/templates下创建emailTemplate.htmlThymeleaf 模板html预览!DOCTYPE html html langzh-CN xmlns:thhttp://www.thymeleaf.org head meta charsetUTF-8 title【SpringBoot邮件测试】/title style .content { color: #333; font-size: 14px; line-height: 1.8; } .sign { color: #666; margin-top: 20px; } /style /head body div classcontent p您好span th:text${username}用户/span/p p这是一封来自SpringBoot的HTML模板邮件您的验证码是span stylecolor: #ff4d4f; font-weight: bold; th:text${code}123456/span/p /div div classsign p—— SpringBoot邮件测试团队/p /div /body /html图 2Thymeleaf 模板文件目录结构此处建议插入截图IDEA 中 resources/templates 下的 emailTemplate.html 位置步骤 5测试邮件发送Controller 层编写接口触发邮件发送java运行package com.example.mail.controller; import com.example.mail.utils.MailSendUtils; import jakarta.mail.MessagingException; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import org.thymeleaf.context.Context; import java.io.File; RestController public class MailController { private final MailSendUtils mailSendUtils; public MailController(MailSendUtils mailSendUtils) { this.mailSendUtils mailSendUtils; } GetMapping(/sendMail) public String sendMail() throws MessagingException { // 1. 收件人列表 String[] to {收件人1qq.com, 收件人2163.com}; // 2. 邮件主题 String subject SpringBoot邮件测试含模板附件; // 3. 模板参数 Context context new Context(); context.setVariable(username, 测试用户); context.setVariable(code, 888888); // 4. 附件示例本地的test.txt文件 File[] attachments {new File(D:/test.txt)}; // 调用工具类发送邮件 mailSendUtils.sendTemplateMailWithAttach(to, subject, emailTemplate, context, attachments); return 邮件发送成功; } }三、遇到的问题 解决过程问题 1MailAuthenticationException认证失败现象启动项目调用接口后控制台报错Authentication failed。原因邮箱未开启 “POP3/SMTP 服务”application.yml中password填的是 QQ 密码而非授权码。解决步骤登录 QQ 邮箱→设置→账户→开启 “POP3/SMTP 服务”生成 “授权码”需验证手机将password替换为授权码。问题 2附件发送后乱码现象收件人收到邮件后附件名称显示为乱码如 “????.txt”。原因MimeMessageHelper未指定编码格式。解决步骤在初始化MimeMessageHelper时显式指定编码为UTF-8java运行MimeMessageHelper helper new MimeMessageHelper(mimeMessage, true, UTF-8);问题 3SocketTimeoutException连接超时现象调用接口后长时间无响应最终报错Connection timed out。原因服务器防火墙屏蔽了 SMTP 端口如 465网络环境限制如公司内网禁止外部邮件连接。解决步骤测试端口连通性用telnet smtp.qq.com 465验证是否能连接若端口不通联系运维开放端口或切换为企业内网邮箱。四、总结 最佳实践核心总结SpringBoot 邮件发送的核心是JavaMailSender配合MimeMessageHelper实现复杂邮件多收件人通过helper.setTo(String[] to)实现附件通过helper.addAttachment()添加Thymeleaf 模板需放在resources/templates目录下通过TemplateEngine渲染为 HTML。生产环境最佳实践异步发送用Async注解 线程池异步发送避免阻塞业务线程java运行// 在工具类方法上添加Async Async public void sendTemplateMailWithAttach(...) { ... }异常重试结合Spring Retry实现邮件发送失败重试避免网络波动导致的单次失败日志记录记录邮件发送状态成功 / 失败便于排查问题。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

西安加盟代理网站建设自己建一个网站难吗

第一章:智能 Agent 的 Docker 安全配置概述在部署智能 Agent 的容器化环境时,Docker 的安全配置是保障系统稳定与数据隔离的核心环节。不当的配置可能导致权限提升、网络暴露或镜像污染等安全风险。因此,从镜像构建到运行时策略,每…

张小明 2026/1/9 9:36:56 网站建设

上海网站建设特点c 网站开发 图书下载

第一章:Azure CLI量子作业结果导出概述在使用 Azure Quantum 服务执行量子计算任务时,获取和分析作业输出是关键步骤。Azure CLI 提供了与量子工作区交互的命令行接口,支持提交作业、监控状态以及导出结果数据。通过合理使用 CLI 命令&#x…

张小明 2026/1/3 22:11:47 网站建设

网站建设的主题湛江定制建站企业网站

兼容 是对企业历史投资的尊重 是确保业务平稳过渡的基石 然而 这仅仅是故事的起点 在数字化转型的深水区,企业对数据库的需求早已超越“语法兼容”的基础诉求。无论是核心业务系统的稳定运行,还是敏感数据的安全防护,亦或是复杂场景下的性能优…

张小明 2026/1/8 16:59:02 网站建设

毕节市网站建设网站介绍怎么写范文

统一内容策略:从概念到实施 在当今数字化的时代,有效的内容管理和策略实施对于组织的成功至关重要。本文将深入探讨统一内容策略的相关概念、关键要素以及实施步骤,帮助你更好地理解和应用这一策略。 1. 核心概念解析 1.1 内容相关概念 参与者(Players) :涉及内容生…

张小明 2026/2/16 5:44:45 网站建设

netcompont网站建站淘宝网站建设没法上传怎么办

第一章:从田间到R控制台——方差分析在农业决策中的角色在现代农业研究中,科学决策依赖于对实验数据的严谨分析。当农学家需要比较不同施肥方案、作物品种或灌溉策略对产量的影响时,方差分析(ANOVA)成为核心统计工具。…

张小明 2025/12/20 13:46:35 网站建设

wordpress移动模块位置江西建网站做优化

SimpRead扩展使用完全指南:快速掌握沉浸式阅读技巧 【免费下载链接】simpread 简悦 ( SimpRead ) - 让你瞬间进入沉浸式阅读的扩展 项目地址: https://gitcode.com/gh_mirrors/si/simpread SimpRead(简悦)是一款让你瞬间进入沉浸式阅读…

张小明 2025/12/20 13:44:34 网站建设