Java实现邮件发送依赖JavaMail API,通过引入javax.mail或jakarta.mail依赖,配置SMTP服务器信息(如QQ邮箱smtp.qq.com:587),使用授权码认证,创建Session和MimeMessage对象,设置发件人、收件人、主题及内容,调用Transport.send()发送;支持文本、HTML格式及附件,适用于通知、验证等场景。

Java 实现邮件发送功能主要依赖于 JavaMail API,它是 Java EE 的一部分,也可以在 Java SE 环境中通过引入外部 jar 包来使用。下面是一个使用 JavaMail 发送普通文本邮件的完整实例。
如果你使用 Maven,在 pom.xml 中添加以下依赖:
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>如果是 Java 11+ 并使用 Jakarta EE,可使用:
<dependency>
<groupId>jakarta.mail</groupId>
<artifactId>jakarta.mail-api</artifactId>
<version>2.0.1</version>
</dependency>以下是一个使用 QQ 邮箱 SMTP 服务发送邮件的完整示例(开启 SMTP 需在邮箱设置中获取授权码):
立即学习“Java免费学习笔记(深入)”;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class EmailUtil {
public static void sendEmail(String to, String subject, String body) {
// 发件人邮箱(例如QQ邮箱)
final String from = "your_email@qq.com";
final String password = "your_authorization_code"; // 注意:不是登录密码,是SMTP授权码
// 设置邮件服务器(以QQ邮箱为例)
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.qq.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true"); // 启用 TLS
// 创建认证器
Authenticator auth = new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(from, password);
}
};
// 获取 Session 对象
Session session = Session.getInstance(props, auth);
try {
// 创建邮件消息
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(subject);
message.setText(body);
// 发送邮件
Transport.send(message);
System.out.println("邮件发送成功!");
} catch (MessagingException e) {
System.out.println("邮件发送失败:" + e.getMessage());
e.printStackTrace();
}
}
// 测试方法
public static void main(String[] args) {
sendEmail("recipient@example.com", "测试邮件", "这是一封通过 JavaMail 发送的测试邮件。");
}
}不同邮箱服务商的 SMTP 地址和端口略有差异:
提示:QQ 邮箱需进入“设置 -> 账户”开启“POP3/SMTP服务”,并获取授权码代替密码。
如果要发送富文本或附件,需使用 MimeMultipart:
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("HTML 邮件");
// 创建内容
MimeMultipart multipart = new MimeMultipart();
// 添加 HTML 内容
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent("<h1>这是一封HTML邮件</h1><p>支持<strong>加粗</strong>等样式。</p>", "text/html;charset=utf-8");
multipart.addBodyPart(htmlPart);
// 设置完整消息内容
message.setContent(multipart);
Transport.send(message);基本上就这些。配置正确后,JavaMail 可稳定用于系统通知、注册验证等场景。
以上就是java怎么实现邮件发送功能 使用JavaMail API发送邮件的实例的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号