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

Spring Boot 集成 JavaMail 发送邮件

Spring Boot 集成 JavaMail 发送邮件

1. 环境准备

1.1 依赖配置

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

1.2 邮箱服务选择

支持主流邮箱服务:

  • QQ邮箱(SMTP服务器:smtp.qq.com)
  • 163邮箱(SMTP服务器:smtp.163.com)
  • Gmail(SMTP服务器:smtp.gmail.com)

⚠️ 注意:需开启邮箱的SMTP服务权限,并获取授权码(非登录密码)

2. 配置详解

2.1 配置文件设置

spring:mail:host: smtp.qq.com       # SMTP服务器地址port: 465               # SMTP端口(SSL加密)username: your@qq.com   # 发件人邮箱password: authorization-code # 授权码properties:mail:smtp:ssl: true         # 启用SSL加密auth: true        # 启用身份验证starttls.enable: true # 启用STARTTLS

2.2 授权码获取流程

  1. 登录邮箱控制台
  2. 进入「设置」-「账户」-「POP3/IMAP/SMTP服务」
  3. 开启SMTP服务
  4. 获取授权码(6位数字)
  5. 将授权码替换配置文件中的密码字段

3. 发送邮件实现

3.1 接口定义

public interface MailService {void sendSimpleMail(String to, String subject, String content);
}

3.2 服务实现

@Service
public class MailServiceImpl implements MailService {@Autowiredprivate JavaMailSender javaMailSender;@Overridepublic void sendSimpleMail(String to, String subject, String content) {SimpleMailMessage message = new SimpleMailMessage();message.setFrom("your@qq.com"); // 发件人邮箱message.setTo(to);              // 收件人邮箱message.setSubject(subject);    // 邮件主题message.setText(content);       // 邮件内容javaMailSender.send(message);}
}

3.3 测试调用

@SpringBootTest
public class MailTest {@Autowiredprivate MailService mailService;@Testpublic void testSendMail() {mailService.sendSimpleMail("recipient@126.com", "测试邮件", "这是一封通过Spring Boot发送的测试邮件");}
}

4. 进阶功能实现

4.1 带附件邮件

public void sendAttachmentsMail(String to, String subject, String content, String[] attachments) {MimeMessage message = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom("your@qq.com");helper.setTo(to);helper.setSubject(subject);helper.setText(content, true); // true表示HTML格式for (String attachment : attachments) {helper.addAttachment(new File(attachment));}javaMailSender.send(message);
}

4.2 带图片邮件

public void sendInlineImageMail(String to, String subject, String content, String imagePath) {MimeMessage message = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom("your@qq.com");helper.setTo(to);helper.setSubject(subject);helper.setText(content, true);helper.addInline("logo", new File(imagePath)); // 图片ID和路径javaMailSender.send(message);
}

5. 常见问题解决方案

5.1 连接异常处理

  • 检查SMTP服务器地址和端口是否正确
  • 确认SSL/TLS配置是否匹配服务器要求
  • 验证授权码是否有效(建议每3个月更新)
  • 检查防火墙是否阻止了465/587端口

5.2 邮件被标记为垃圾邮件

  • 使用发件人昵称(如:小甜甜<your@qq.com>
  • 避免使用"请查收"等营销性措辞
  • 确保邮件内容与收件人相关
  • 添加邮件签名(包含退订链接)

5.3 邮件发送失败

  • 检查邮箱配额是否已满
  • 查看邮箱服务器日志(如QQ邮箱的"收件箱"->“垃圾箱”)
  • 使用邮件调试工具(如MailHog)
  • 增加重试机制和异常处理

6. 安全建议

  1. 密码管理:使用加密存储授权码,避免明文存储
  2. 环境隔离:开发/测试环境与生产环境使用不同邮箱账户
  3. 访问控制:限制邮件服务接口的访问权限
  4. 日志审计:记录邮件发送日志,定期检查异常行为
  5. 敏感信息:避免在邮件内容中传输敏感数据

7. 补充说明

概念说明
SMTP简单邮件传输协议,用于发送邮件
SSL/TLS加密通信协议,保障数据传输安全
MIME多用途互联网邮件扩展,支持附件和图片
JavaMailSenderSpring Boot 提供的邮件发送抽象接口
SimpleMailMessage简单邮件消息类,用于发送基础邮件

📌 注意:实际生产环境建议使用邮件网关服务(如Amazon SES、阿里云邮件服务)替代直接使用邮箱SMTP,以获得更好的可靠性和安全性。

http://www.dtcms.com/a/436064.html

相关文章:

  • 返利网 网站开发制作网站赚钱吗
  • [实战] 实时任务 vs 非实时任务:在PREEMPT-RT环境下的编程实践
  • RabbitMq入门之概括
  • 山西营销网站建设那个公司好上海百度seo
  • 经验分享:如何通过SAP HANA数据库优化将SAP B1性能提升50%
  • 免费注册域名邮箱龙岗优化网站建设
  • 如何通过cpa网站做推广产品展厅柜设计公司
  • 机器视觉滤光片怎么选?
  • 韶关市建设与房地产信息网站营销排名seo
  • 波音网站开发php网站开发用什么ide
  • 电子商务网站功能设计与分析微信社群营销怎么做
  • 运城手机网站制作郑州高端设计公司
  • 音乐网站建设规划第1ppt模板免费下载
  • 如何对网站进行分析网站开发合作
  • GUI自动化之pywinauto
  • 杭州网站设计费用app软件下载入口
  • 网站建设php教程建设一个好的网站
  • 遵义网站建设找工作百安居装修口碑怎么样
  • 用别人的网站视频做app网站建设文字设计
  • 网站建设推广兼职地推一手项目平台
  • 网站建设和安全管理制度html5制作网页的代码
  • C++类和对象(1)
  • 嵌入式开发学习日志32——stm32之PWM
  • 数据结构 之 【图的最短路径】(Dijstra、BellmanFord、FloydWarShall算法实现)
  • 时序数据库高基数问题(一):当数据标签太多时会发生什么
  • 东莞市企业网站制作企业关键词推广优化排名品牌
  • 个人网站免费搭建软文标题和内容
  • 普洱高端网站建设价格燕郊房价2023年最新房价走势
  • 怎么做二维码微信扫后直到网站合肥网站排名提升
  • 如何办网站 论坛网站一定要公司吗