springboot 邮箱发送,发送多个附件
时间: 2023-06-28 17:08:33 浏览: 162
在 Spring Boot 中发送带有多个附件的邮件可以使用 Java Mail API。以下是一个示例代码:
```java
import java.io.File;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.InputStreamSource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
@Service
public class MailService {
@Autowired
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
private String from;
public void sendMailWithAttachments(String to, String subject, String text, File[] files) throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
// create the multipart
MimeMultipart multipart = new MimeMultipart();
// add the message body
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(text);
multipart.addBodyPart(messageBodyPart);
// add the attachments
for (File file : files) {
BodyPart attachmentBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(file);
attachmentBodyPart.setDataHandler(new DataHandler(source));
attachmentBodyPart.setFileName(file.getName());
multipart.addBodyPart(attachmentBodyPart);
}
// set the multipart as the message's content
message.setContent(multipart);
message.setFrom(new InternetAddress(from));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
message.setSubject(subject);
mailSender.send(message);
}
}
```
在这个示例中,我们使用了 Spring Boot 的 JavaMailSender 来发送邮件。我们通过注入 JavaMailSender 实例来让 Spring Boot 管理 Java Mail API 相关的资源。我们还注入了 from 属性,该属性用于指定发送方邮箱地址。
sendMailWithAttachments 方法接收四个参数:to,subject,text 和 files。其中,to 参数表示接收方邮箱地址,subject 参数表示邮件主题,text 参数表示邮件正文,files 参数表示文件数组。
在 sendMailWithAttachments 方法中,我们首先创建了一个 MimeMessage 实例。然后,我们创建了一个 MimeMultipart 实例,并将 Message Body 添加到其中。接下来,我们遍历 files 数组,并将每个文件添加到 MimeMultipart 中。最后,我们设置邮件的发送方、接收方和主题,并使用 JavaMailSender 的 send 方法发送邮件。
希望这个示例对你有帮助!
阅读全文