在Java里JavaMail API如何发送电子邮件_Java邮件发送工具说明-java教程

JavaMail发送邮件必须正确配置host、port、TLS/SSL及认证参数,使用Authenticator提供凭据,纯文本/HTML/附件邮件构建方式不同,且JDK11+/Spring Boot 3+需迁移到Jakarta Mail。

JavaMail API 发送邮件前必须配置的几个关键参数

不配对 mail.smtp.host、mail.smtp.port 和认证开关,javax.mail.AuthenticationFailedException 几乎必现。Gmail、Outlook、企业邮箱的端口和 TLS/SSL 要求各不相同:

  • Gmail:用 smtp.gmail.com,端口 587(STARTTLS)或 465(SSL),必须开启 mail.smtp.auth 且关闭 mail.smtp.ssl.enable(587 时);若用 465,则设 mail.smtp.ssl.enable=true
  • QQ 邮箱:smtp.qq.com,端口 587,mail.smtp.starttls.enable=true,不能开 ssl.enable
  • 企业 Exchange 或自建 SMTP:需确认是否强制要求 mail.smtp.ssl.trust 指定主机名,否则抛 javax.net.ssl.SSLHandshakeException

Authenticator 不是可选项,而是连接凭据的唯一载体

Session.getInstance(props, new Authenticator()) 中的 Authenticator 子类必须重写 getPasswordAuthentication(),返回含用户名密码的 PasswordAuthentication 对象。常见错误包括:

  • 直接传 null 或空字符串给 new PasswordAuthentication(...) → 登录被拒
  • 用邮箱完整地址(如 [email protected])作用户名,但某些 SMTP 服务只要求前缀(user)
  • 密码填的是邮箱登录密码,而 Gmail/Outlook 等要求用「应用专用密码」(App Password),普通密码会失败

发送纯文本和带附件的邮件,MimeMessage 构建逻辑完全不同

别指望一个 MimeMessage 实例能同时满足两类需求。核心区别在 Multipart 的嵌套结构:

  • 纯文本:直接 message.setText("hello", "UTF-8") 即可,不用 Multipart
  • HTML 邮件:用 message.setContent(htmlStr, "text/html; charset=UTF-8")
  • 带附件:必须用 MimeMultipart("mixed") 作为根容器,再往里加 MimeBodyPart(正文)和另一个 MimeBodyPart(附件),附件需调用 bodyPart.attachFile(file) 并设 bodyPart.setFileName(...)

漏掉 multipart.addBodyPart(...) 任意一次,附件就发不出去,且无报错提示。

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » 在Java里JavaMail API如何发送电子邮件_Java邮件发送工具说明-java教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3996645+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3996645+
  • 本周更新: 0+
  • 最后更新: 2026-03-16