simplemailmessage 发邮件多个附件
时间: 2024-09-06 16:03:13 浏览: 29
`SimpleMailMessage` 是 Spring 框架提供的一个用于发送邮件的简单封装类。它提供了一系列设置邮件基本信息的方法,例如发件人、收件人、邮件主题和邮件内容等。然而,需要注意的是,`SimpleMailMessage` 类本身并不支持直接添加附件,它主要用于发送纯文本邮件。
如果你需要发送带有多个附件的邮件,你应该使用 `MimeMessage` 类,它是 JavaMail API 提供的一个更高级的邮件消息对象。以下是一个使用 `MimeMessage` 创建并发送带附件的邮件的简单示例:
```java
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.MimeUtility;
import java.util.Properties;
// 邮件发送者、接收者、邮件服务器的相关信息
String from = "from@example.com";
String to = "to@example.com";
String host = "smtp.example.com";
// 获取系统属性
Properties properties = System.getProperties();
// 设置邮件服务器
properties.setProperty("mail.smtp.host", host);
properties.setProperty("mail.smtp.port", "465");
properties.setProperty("mail.smtp.ssl.enable", "true");
properties.setProperty("mail.smtp.auth", "true");
// 获取默认的 Session 对象
Session session = Session.getDefaultInstance(properties,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("username", "password");
}
});
try {
// 创建默认的 MimeMessage 对象
MimeMessage message = new MimeMessage(session);
// 设置 From: 头部头字段
message.setFrom(new InternetAddress(from));
// 设置 To: 头部头字段
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
// 设置 Subject: 头部头字段
message.setSubject("This is the Subject Line!");
// 创建消息内容
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("This is actual message");
// 创建多部分消息
Multipart multipart = new MimeMultipart();
// 将文本部分添加到多部分消息中
multipart.addBodyPart(messageBodyPart);
// 附加多个文件
BodyPart messageBodyPartFile = new MimeBodyPart();
DataSource source = new FileDataSource("path/to/your/attachment1.jpg");
messageBodyPartFile.setDataHandler(new DataHandler(source));
messageBodyPartFile.setFileName(MimeUtility.encodeText(source.getName()));
multipart.addBodyPart(messageBodyPartFile);
// 可以继续添加更多附件
// ...
// 将多部分消息对象设置到消息对象中
message.setContent(multipart);
// 发送消息
Transport.send(message);
System.out.println("Sent message successfully....");
} catch (MessagingException mex) {
mex.printStackTrace();
}
```
在上面的代码中,我们首先配置了邮件服务器的相关信息,并创建了一个 `MimeMessage` 实例。我们设置了发件人和收件人,并创建了一个 `MimeMultipart` 对象来表示邮件内容。在这个多部分消息对象中,我们首先添加了一个文本类型的 `MimeBodyPart`,然后又添加了一个文件类型的 `MimeBodyPart` 作为附件。可以继续添加更多的附件。
阅读全文