java实现一个邮件发送
时间: 2024-09-08 11:03:54 浏览: 50
在Java中实现邮件发送通常涉及到两个主要部分:SMTP协议(Simple Mail Transfer Protocol)的库和发送电子邮件的逻辑。以下是基本步骤:
1. 添加依赖库:
首先,你需要添加一个JavaMail API的依赖,它是Java标准库的一部分,用于处理邮件。如果你使用Maven,可以在pom.xml文件中添加如下依赖:
```xml
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.6.2</version>
</dependency>
```
2. 创建邮箱配置:
需要设置发件人、收件人邮箱地址以及SMTP服务器的相关信息,例如主机名、端口号、用户名和密码。
3. 创建邮件实例:
使用`Session`类创建一个邮件会话,并指定邮件属性,如邮件内容和主题等。
```java
Properties props = new Properties();
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("your-email@example.com", "your-password");
}
});
```
4. 创建邮件消息:
创建`Message`对象,包括邮件头和正文。
```java
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("your-email@example.com"));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient-email@example.com"));
message.setSubject("邮件主题");
message.setText("邮件正文");
```
5. 发送邮件:
最后,调用`Transport`类的`send()`方法发送邮件。
```java
Transport.send(message);
```
6. 关闭连接:
在完成操作后记得关闭`Session`和`Transport`。
```java
session.close();
Transport.close();
```
**完整示例代码:**
```java
import javax.mail.*;
import javax.mail.internet.*;
public class EmailSender {
public static void main(String[] args) {
String from = "your-email@example.com";
String password = "your-password";
String to = "recipient-email@example.com";
String host = "smtp.example.com";
int port = 587;
String subject = "测试邮件";
String text = "这是一封测试邮件";
// 邮件属性
Properties properties = System.getProperties();
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", port);
try {
// 开始邮件会话并登录
Session session = Session.getInstance(properties, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(from, password);
}
});
// 创建邮件
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
InternetAddress[] recipients = {new InternetAddress(to)};
message.setRecipients(Message.RecipientType.TO, recipients);
message.setSubject(subject);
message.setText(text);
// 发送邮件
Transport.send(message);
System.out.println("邮件已成功发送");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
```