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.");
    }


}
相关推荐
3153566913几秒前
DeepSeek Harness 发布后,我没急着跑 Demo,先把 `.agents/` 翻了一遍
前端·后端·github
Nturmoils13 分钟前
不在公司,也能连回办公电脑:用 Natapp 打通 Windows 远程桌面
后端
LEE14 分钟前
AI Agent 都在疯狂加功能,它说:我全砍了
前端·后端
吠品19 分钟前
Java byte数组与String互转:编码细节与踩坑记录
java·linux·服务器
桦说编程28 分钟前
记一次 Coding Agent 改动带来的bug与启示
后端·agent·vibecoding
302wanger30 分钟前
Mole-在终端里给Mac做减法
后端
晚风醉蝶35 分钟前
1-6-插入排序-InsertionSort
java·数据结构·排序算法
一心只读圣贤书1 小时前
本地后端环境与前端联调总结(前端小白视角)
后端
yaoxin5211231 小时前
497. Java 反射 - 使用反射读取注解
java·开发语言·python
杨利杰YJlio2 小时前
KB5121003更新详解:安全启动证书、AI组件、资源管理器与安装验证
前端·javascript·后端