Javamail发送Excel附件具体实现

在我写大学生高考志愿填报的时候,将推荐出来的专业表的信息发送到指定的账户的邮件中

下面代码的实现讲解:

  • 首先创建配置文件,配置邮箱账户的信息
  • 配置用于生成表格的实体类,实体类中的信息就对应着Excel表中的信息
  • 逻辑的具体实现:
    • 首先从Cookie中获取账户的邮箱信息,(我在cookie中只存了账户的邮箱号,没有帐户其他的信息)。
    • 获取我查询结果的datas
    • 将datas封装成Excel表格
    • 发送带有Excel表格的邮件
    • 将本地的Excel表格删除掉
application.yml:
java 复制代码
spring:
  mail:
    host: smtp.qq.com
    username: 2asdfasdf7@qq.com
    password: asdoighwakjfns
    properties:
      mail:
        smtp:
          ssl:
            enable: true
entity层:(实体类中的血法)
java 复制代码
@Getter
@Setter
@TableName("t_pitch")
public class Pitch implements Serializable {
    private static final long serialVersionUID = 1L;
    @ExcelIgnore
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 院校代号
     */
    @ExcelProperty("院校代号")
    @TableField("schoolCode")
    private String schoolCode;
    /**
     * 学校名称
     */
    @ExcelProperty("学校名称")
    @TableField("schoolName")
    private String schoolName;
    /**
     * 专业代号
     */
    @ExcelProperty("专业代号")
    @TableField("pCode")
    private String pCode;
    /**
     * 专业名称
     */
    @ExcelProperty("专业名称")
    @TableField("pName")
    private String pName;
    /**
     * 最低投档分数
     */
    @ExcelProperty("最低投档分数")
    @TableField("lowestScore")
    private String lowestScore;
    /**
     * 最低投档位次
     */
    @ExcelProperty("最低投档位次")
    @TableField("lowestRank")
    private String lowestRank;
}
controller层代码:
java 复制代码
@RequestMapping("/sendExcel")
@ResponseBody
public void sendExcel(HttpServletRequest request, HttpServletResponse response) throws MessagingException {
    //1、获取cookie中的邮箱信息
    Cookie[] cookies = request.getCookies();
    for(Cookie cookie:cookies){
        if(cookie.getName().equals("email")){
            email1 = cookie.getValue();
            break;
        }
    }
    //2、获取表中的信息 datas,然后生成xlsx
    //写文件:
    String tempFilePath=PATH+"专业推荐表.xlsx";
    EasyExcel.write(tempFilePath,Pitch.class)
            .sheet("统计表1")
            .doWrite(datas);
    //3、发送信息
    MimeMessage message = javaMailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message,true);
    helper.setFrom("211111111@qq.com");
    helper.setTo(email1);
    helper.setSubject("邮件发送数据");
    helper.setText("以下是为您导出的专业推荐表");

    File file = new File(tempFilePath);
    DataSource source= new FileDataSource(file);
    helper.addAttachment(file.getName(),source);
    javaMailSender.send(message);
    boolean delete = file.delete();
    if (delete) {
        System.out.println("Temporary file deleted successfully.");
    } else {
        System.out.println("Failed to delete temporary file.");
    }


}
相关推荐
Clown954 分钟前
go-zero(一) 介绍和使用
开发语言·后端·golang
namedlock14 分钟前
Failed to create a temp file - Jenkins 无法创建任务
java·servlet·jenkins
NiNg_1_2341 小时前
Spring Boot项目pom.xml文件详解
spring boot·后端·websocket
潜洋1 小时前
Spring Boot教程之Spring Boot简介
java·spring boot·后端
In 20291 小时前
7.一维差分
java·数据结构·算法
逊嘘1 小时前
【Java语言】String类
java·开发语言
Funky_oaNiu1 小时前
如何使用EasyExcel生成多列表组合填充的复杂Excel示例
java·excel·easyexcel
进阶的小叮当1 小时前
记一次家里工作站做网站穿透遇见的问题
前端·后端
魔道不误砍柴功1 小时前
@ComponentScan:Spring Boot中的自动装配大师
java·spring boot·后端
真是他1 小时前
反射与特性
后端