java 发送带附件的邮件
时间: 2023-09-28 21:04:22 浏览: 147
java 发送邮件(带附件)
5星 · 资源好评率100%
可以使用 JavaMail API 来发送带附件的邮件。下面是一个简单的示例代码:
```java
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
public class SendMailWithAttachment {
public static void main(String[] args) {
// 发件人邮箱地址和密码
final String senderEmail = "your_email@example.com";
final String senderPassword = "your_email_password";
// 收件人邮箱地址
String recipientEmail = "recipient_email@example.com";
// 邮件主题和正文
String emailSubject = "Test email with attachment";
String emailBody = "This is a test email with attachment.";
// 附件文件路径
String attachmentFilePath = "path/to/attachment/file";
// 发送邮件
Properties properties = new Properties();
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.host", "smtp.gmail.com");
properties.put("mail.smtp.port", "587");
Session session = Session.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(senderEmail, senderPassword);
}
});
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(senderEmail));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipientEmail));
message.setSubject(emailSubject);
// 创建邮件正文部分
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(emailBody);
// 创建附件部分
MimeBodyPart attachmentBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(attachmentFilePath);
attachmentBodyPart.setDataHandler(new DataHandler(source));
attachmentBodyPart.setFileName(source.getName());
// 将正文部分和附件部分组合成混合的 MimeMultipart 对象
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
multipart.addBodyPart(attachmentBodyPart);
// 将混合的 MimeMultipart 对象设置为整个邮件的内容
message.setContent(multipart);
// 发送邮件
Transport.send(message);
System.out.println("Email sent successfully.");
} catch (MessagingException e) {
System.out.println("Failed to send email. Error message: " + e.getMessage());
}
}
}
```
在代码中,需要将 `senderEmail` 和 `senderPassword` 替换为发件人的邮箱地址和密码,将 `recipientEmail` 替换为收件人的邮箱地址,将 `emailSubject` 和 `emailBody` 替换为邮件的主题和正文,将 `attachmentFilePath` 替换为附件文件的路径。
使用 JavaMail API 发送带附件的邮件需要注意以下几点:
- 需要引入 JavaMail API 和 Java Activation Framework(JAF)的库。
- 需要设置邮件服务器的地址和端口号,例如 Gmail 的地址是 smtp.gmail.com,端口号是 587。
- 需要使用 `javax.mail.Authenticator` 类创建一个实现了 `getPasswordAuthentication()` 方法的子类来提供发件人邮箱地址和密码。
- 需要创建一个 `MimeMessage` 对象来表示邮件,设置发件人、收件人、主题和内容。
- 需要创建一个 `MimeBodyPart` 对象来表示附件,将附件文件的数据源和文件名设置到 `DataHandler` 和 `setFileName()` 方法中,然后将其添加到混合的 `MimeMultipart` 对象中。
- 需要将邮件的正文部分和附件部分组合成混合的 `MimeMultipart` 对象,然后将其设置为整个邮件的内容。
- 最后调用 `Transport.send()` 方法将邮件发送出去。
阅读全文