在Java中发送邮件通常使用JavaMail API,允许开发者轻松地构造和发送邮件。下面是一个使用JavaMail API的简单示例,演示如何发送电子邮件。
1. 添加依赖
如果您使用Maven管理您的项目,请在pom.xml
中添加JavaMail API的依赖:
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
确保还添加了Java Activation Framework(JAF)的依赖:
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.2.0</version>
</dependency>
如果您不使用Maven,可以从JavaMail GitHub页面下载相关的JAR包并添加到项目的构建路径中。
2. 发送邮件示例代码
以下是一个完整的示例代码,演示如何使用JavaMail发送邮件:
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeBodyPart;
public class SendEmailExample {
public static void main(String[] args) {
// 发件人邮箱地址和密码
final String fromEmail = "your_email@example.com"; // Sender's email
final String password = "your_password"; // Sender's password
// 收件人邮箱地址
String toEmail = "recipient_email@example.com"; // Receiver's email
// 1. 设置邮件服务器属性
Properties properties = new Properties();
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true"); // 使用TLS
properties.put("mail.smtp.host", "smtp.example.com"); // SMTP服务器地址
properties.put("mail.smtp.port", "587"); // SMTP端口
// 2. 创建会话
Session session = Session.getInstance(properties, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(fromEmail, password);
}
});
try {
// 3. 创建邮件消息
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(fromEmail));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toEmail));
message.setSubject("测试邮件主题");
// 4. 创建邮件正文
MimeBodyPart mimeBodyPart = new MimeBodyPart();
mimeBodyPart.setContent("这是邮件正文内容", "text/html"); // 可以使用HTML格式
Multipart multipart = new javax.mail.internet.MimeMultipart();
multipart.addBodyPart(mimeBodyPart);
message.setContent(multipart);
// 5. 发送邮件
Transport.send(message);
System.out.println("邮件发送成功");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
3. 代码说明
- 邮件服务器属性:设置SMTP服务器的相关参数,如
host
、port
、auth
等。请根据您使用的邮件服务提供商调整这些参数,例如对于Gmail,smtp.gmail.com
和端口587
。 - 会话创建:使用认证信息(发件人邮箱和密码)创建会话。
- 邮件消息:创建
MimeMessage
对象,并设置发件人、收件人和主题等信息。 - 邮件正文:创建
MimeBodyPart
对象用于设置邮件内容,可以是纯文本或HTML格式。 - 发送邮件:使用
Transport.send()
发送邮件。
注意事项
- 安全性:请注意不要在生产代码中直接硬编码密码、邮箱等敏感信息,可以考虑使用环境变量或安全配置文件。
- TLS/SSL设置:确保SMTP服务器支持TLS/SSL,并根据需要进行配置。
- 允许低安全性应用访问:如果您使用Gmail等服务发送邮件,可能需要允许低安全性应用访问或生成应用专用密码。