在Spring Boot中发送包含多个附件的电子邮件可以通过使用JavaMailSender来实现。下面是一个完整的示例代码:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.mail.MailProperties;
import org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
@SpringBootApplication(exclude = MailSenderAutoConfiguration.class)
@RestController
public class EmailApplication {
@Autowired
private JavaMailSender mailSender;
@Autowired
private MailProperties mailProperties;
public static void main(String[] args) {
SpringApplication.run(EmailApplication.class, args);
}
@GetMapping("/sendEmail")
public void sendEmail() throws MessagingException {
mailSender.send(new MimeMessagePreparator() {
@Override
public void prepare(MimeMessage mimeMessage) throws Exception {
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setFrom(mailProperties.getUsername());
helper.setTo("recipient@example.com");
helper.setSubject("Email with attachments");
helper.setText("Please see the attached files.");
// 添加第一个附件
File attachment1 = new File("path/to/attachment1.txt");
helper.addAttachment("attachment1.txt", attachment1);
// 添加第二个附件
byte[] attachmentData = "Hello, World!".getBytes();
ByteArrayResource attachment2 = new ByteArrayResource(attachmentData);
helper.addAttachment("attachment2.txt", attachment2);
// 添加第三个附件
File attachment3 = new File("path/to/attachment3.pdf");
helper.addAttachment("attachment3.pdf", new FileSystemResource(attachment3));
}
});
}
}
上述代码中,我们首先使用@Autowired
注解来注入JavaMailSender
和MailProperties
对象。JavaMailSender
是Spring Boot提供的邮件发送工具,MailProperties
用于配置邮件服务器的相关信息。
在sendEmail
方法中,我们通过创建MimeMessagePreparator
对象并重写prepare
方法来准备发送邮件的相关信息。使用MimeMessageHelper
类可以方便地设置邮件的发送者、收件人、主题和正文内容。
在MimeMessageHelper
中,我们使用addAttachment
方法来添加附件。你可以通过File
对象或者字节数组的方式添加附件。如果是通过File
对象添加附件,可以使用FileSystemResource
来封装文件路径。
需要注意的是,使用MimeMessageHelper
的构造函数的第二个参数设置为true
,表示支持多部分内容和附件。
完成以上步骤后,使用mailSender
对象的send
方法发送邮件即可。
对于Spring Boot中发送包含多个附件的电子邮件,腾讯云提供了云邮件服务(https://cloud.tencent.com/product/sendemail)来支持邮件发送和管理。你可以根据实际需求选择相应的腾讯云产品来实现邮件发送功能。
领取专属 10元无门槛券
手把手带您无忧上云