Java中实现邮件发送需用jakarta.mail API配SMTP,配置服务器地址、端口、授权码,启用TLS/SSL,创建Session和Message,调用Transport.send();常见问题包括端口屏蔽、授权码错误及SSL验证失败。

Java中实现简单邮件发送功能,核心是使用JavaMail API配合SMTP协议,不需要复杂框架,几行代码就能发出测试邮件。
配置SMTP服务器和认证信息
发送邮件前需明确SMTP服务器地址、端口、账号和密码。常用邮箱如QQ邮箱、163邮箱都支持SMTP,但需在邮箱设置中开启“POP3/SMTP服务”,并获取专用授权码(不是登录密码)。
- QQ邮箱:SMTP服务器为 smtp.qq.com,端口通常用 587(TLS)或 465(SSL)
- 163邮箱:SMTP服务器为 smtp.163.com,端口 465 或 994
- 务必使用授权码而非邮箱登录密码,否则会因安全策略被拒绝
添加JavaMail依赖
JavaMail已从Oracle移交至Eclipse Foundation,推荐使用 jakarta.mail(新版),Maven依赖如下:
<dependency><groupId>jakarta.mail</groupId>
<artifactId>jakarta.mail-api</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.1.3</version>
</dependency>
编写发送逻辑(纯文本邮件)
创建Session对象时需配置SMTP参数和认证;Message对象设置发件人、收件人、主题和内容;Transport.send()完成投递。
立即学习“Java免费学习笔记(深入)”;
- 启用TLS/SSL需设置 mail.smtp.starttls.enable=true 或 mail.smtp.ssl.enable=true
- 认证必须通过 Authenticator 子类提供用户名和密码
- 注意:收件人地址必须是合法邮箱格式,多个收件人可用 MimeMessage.addRecipient() 多次调用
常见问题与调试建议
发送失败大多源于配置或网络限制,可按顺序排查:










