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


}
相关推荐
摆烂工程师几秒前
教你如何查询 Codex 最新额度是多少,以及 ChatGPT Pro、Plus、Business 最新额度变化
前端·后端·ai编程
用户66885998476611 分钟前
Sprint Boot登录案例
java
任聪聪12 分钟前
我做了一款通用本地化部署模型运行调度器,运行所有大模型!
后端
开发者如是说22 分钟前
可能是最好用的多语言管理工具
android·前端·后端
开开心心_Every31 分钟前
内存清理软件灵活设置,自动阈值快捷键清
运维·服务器·pdf·web3·电脑·excel·共识算法
Ivanqhz32 分钟前
LLVM IR 转 SMT公式
java·开发语言
一个心烑36 分钟前
奖项届定获取方式
java
小红的布丁36 分钟前
Reactor 模型详解:单 Reactor、主从 Reactor 与 Netty 思想
android·java·开发语言
weixin_7042660543 分钟前
redis 的集群
java·数据库·redis
被摘下的星星1 小时前
Java的类加载
java·开发语言