首页 > 解决方案 > java - 如何在java springboot中通过电子邮件发送HSSFWorkbook xls?

问题描述

所以我有自己的 java springboot 代码,它使用本地目录中的 List 编写一个 excel 电子表格。基本上它只是获取我想要的目录中的文件列表,然后将目录中每个 zip 文件的内容列出到 Excel 电子表格中。然后我使用 FileOutputStream 将该 XLS 生成到另一个目录中。代码看起来像:

HSSFWorkbook workbook = new HSSFWorkbook();
Sheet sheet = workbook.createSheet("Test sheet");
/*
...
insert code to create the rows and cells of the workbook/sheet
...
*/

FileOutputStream fileOutputStream = new FileOutputStream("/test/random/excelspreadsheets")
workbook.write(fileOutputStream);
fileOutputStream.close();

所以这会写入 xls,生成它并将其保存到指定的目录中,但我的问题是,我如何将其作为电子邮件发送,主题为 cc、发件人、收件人,最重要的是作为电子邮件的附件来指定我的电子邮件或朋友的电子邮件?在过去的一天里,我一直在挠头,不知道,这对我来说似乎很模糊。谢谢!

标签: javaexcelspring-bootemailemail-attachments

解决方案


首先添加这个依赖

    <!-- Email -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
        <version>${spring.boot.version}</version>
    </dependency>

然后您可以使用以下服务发送此电子邮件

@Service
public class EmailService {
private JavaMailSender emailSender;

@Autowired
public EmailService(JavaMailSender emailSender) {
    this.emailSender = emailSender;
}

public void sendEmail() {

    String to = "recepient@gmail.com";
    String subject = "email subject";
    String text = "email text";

    MimeMessage message = emailSender.createMimeMessage();

    //TODO here convert your workbook to a xlsx file 
    File file = new File("yourFile.xlsx");
    if (file.exists() && !file.isDirectory()) {

        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(text);

            helper.addAttachment("yourFile.xlsx", file);
        } catch (Exception ex) {
        System.out.println("Error");
        }
    }

    emailSender.send(message);
}

推荐阅读