无缓存定时发送带附件(表格)等邮件

这篇具有很好参考价值的文章主要介绍了无缓存定时发送带附件(表格)等邮件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通过springBoot定时发送邮件

1.导入发送邮件的包

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

2.配置yml

  mail:
    host: smtp.exmail.qq.com ##邮件域名
    default-encoding: UTF-8
    port: 465
    protocol: smtps
    username: zzzzz@qq.com ## 发送人邮件
    password: sss  ##企业邮箱获取服务授权码,可以百度一下怎么申请授权码
    properties:
      mail:
        debug: false
        smtp:
          timeout: 10000
          connection-timeout: 10000
          writetimeout: 10000
          ssl:
            enabled: true
            required: true
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory
            port: 465

3.添加定时任务

    /**
     * 每天12点更新
     * <p>
     * 0 0/1 * * * ?
     * <p>
     * 0 0 10 * * ?
     */
    @Scheduled(cron = "0 0 12 * * ?")
    public void endMailTask() throws IOException {
        if (scheduledOpen) {
            sendMailService.sendMail();
        }
    }

4.实现


@Service
public class SendMailServiceImpl implements SendMailService {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());
    @Resource
    private JavaMailSender javaMailSender;

    @Resource
    private OrderDao orderDao;

    //发送人
    private String from = "test@qq.com";
    //接收人
    private String to = "test1@qq.com";
    //标题
    private String subject = "标题";
    //正文
    private String context = "标题";

    @Override
    public void sendMail() throws IOException {
        logger.info("开始发送邮件。");
        //getList
        InputStreamSource orderList = getOrderList();
        if (orderList == null) {
            return;
        }
        MimeMessage message = javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = setInfoByHelper(to, subject, context, message);
            helper.addAttachment("邮件名称.xls", orderList);
            javaMailSender.send(message);
            logger.info("带附件的邮件已经发送。");
        } catch (MessagingException e) {
            logger.error("发送带附件的邮件时发生异常!", e);
        }
        logger.info("结束发送邮件。");
    }

    /**
     * 利用helper设置各种邮件发送相关的信息
     */
    private MimeMessageHelper setInfoByHelper(String to, String subject, String content, MimeMessage message)
            throws MessagingException {
        //true表示需要创建一个multipart message
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setFrom(from);
        //接收人,可添加多个
        String[] receiveUsers =new String[]{"sss", "sss"};
        //抄送人,可添加多个
        String[] copyUsers = new String[]{"sssss"};
        helper.setTo(receiveUsers);
        helper.setCc(copyUsers);
        helper.setSubject(subject);
        helper.setText(content, true);
        return helper;

    }

    private InputStreamSource getOrderList() throws IOException {
        //
        // DateUtils.getDayStart()
        //业务逻辑
        List<OrderDO> orderAll = orderDao.getByStatusAndTime(ICBC_JH_DTQD.getItemCode(), 8 , dayStart, dayEnd);
        if (orderAll.isEmpty()) {
            return null;
        }
        //标头
        String[] headers = {"订单编号", "充值电话号码", "充值金额(单位:分)", "支付完成时间"};
        // 声明一个工作薄
        HSSFWorkbook wb = new HSSFWorkbook();
        // 生成一个表格
        HSSFSheet sheet = wb.createSheet("sheet0");
        HSSFRow row = sheet.createRow(0);
        // 设置表头字体样式
        HSSFFont columnHeadFont = wb.createFont();
        columnHeadFont.setFontName("宋体");
        columnHeadFont.setFontHeightInPoints((short) 10);
        // 列头的样式
        HSSFCellStyle columnHeadStyle = wb.createCellStyle();
        columnHeadStyle.setFont(columnHeadFont);
        columnHeadStyle.setLocked(true);
        columnHeadStyle.setWrapText(true);
        // 左边框的颜色
        columnHeadStyle.setLeftBorderColor(HSSFColor.BLACK.index);
        // 边框的大小
        columnHeadStyle.setBorderLeft(BorderStyle.valueOf((short) 1));
        // 右边框的颜色
        columnHeadStyle.setRightBorderColor(HSSFColor.BLACK.index);
        // 边框的大小
        columnHeadStyle.setBorderRight(BorderStyle.valueOf((short) 1));
        // 设置单元格的边框颜色
        columnHeadStyle.setBottomBorderColor(HSSFColor.BLACK.index);
        // 设置单元格的背景颜色(单元格的样式会覆盖列或行的样式)
        columnHeadStyle.setFillForegroundColor(HSSFColor.WHITE.index);
        // 设置普通单元格字体样式
        HSSFFont font = wb.createFont();
        font.setFontName("宋体");
        font.setFontHeightInPoints((short) 10);


        for (int i = 0; i < headers.length; i++) {
            HSSFCell cell = row.createCell(i);
            cell.setCellValue(new HSSFRichTextString(headers[i]));
            cell.setCellStyle(columnHeadStyle);
        }
        int rowIndex = 1;

        for (OrderDO orderDO : orderAll){
            row = sheet.createRow(rowIndex);
            rowIndex++;
            HSSFCell cell = row.createCell(0);
            cell.setCellValue(new HSSFRichTextString(orderDO.getOrderNo()));
            cell.setCellStyle(columnHeadStyle);

            cell = row.createCell(1);
            cell.setCellValue(new HSSFRichTextString(orderDO.getIssueAccountNum()));
            cell.setCellStyle(columnHeadStyle);

            cell = row.createCell(2);
            cell.setCellValue(new HSSFRichTextString(orderDO.getPrizeAmount().toString()));
            cell.setCellStyle(columnHeadStyle);

            cell = row.createCell(3);
            cell.setCellValue(new HSSFRichTextString(DateUtils.formatDateToStr(orderDO.getCompletionTime())));
            cell.setCellStyle(columnHeadStyle);

        }

        ByteArrayOutputStream os = new ByteArrayOutputStream(1000);
        wb.write(os);
        wb.close();
        InputStreamSource iss = new ByteArrayResource(os.toByteArray());
        os.close();
        return iss;
    }


}

文章来源地址https://www.toymoban.com/news/detail-513575.html

到了这里,关于无缓存定时发送带附件(表格)等邮件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux之实现Apache服务器监控、数据库定时备份及通过使用Shell脚本发送邮件

    目录  一、Apache服务器监控 为什么要用到服务监控? 实现Apache服务器监控 二、数据库备份 为什么要用到数据库备份? 实现数据库备份 三、Shell脚本发送邮件 为什么要用使用Shell脚本发送邮件? 实现Shell脚本发送邮件 在Linux中监控Apache服务器是非常重要的,原因如下: 保证

    2024年04月15日
    浏览(59)
  • Spring Boot邮件发送教程:步步为营,轻松实现图片附件邮件!

      通过Spring Boot构建一个功能强大的邮件发送应用程序,重点是实现发送包含图片附件的邮件。我将逐步介绍添加必要的依赖、创建邮件服务类和控制器的步骤,并提供了具体的示例源代码。跟随这个简单而清晰的教程,您将能够轻松地集成邮件发送功能到您的Spring Boot应用中

    2024年02月04日
    浏览(37)
  • 一篇文章带你了解Java发送邮件:使用JavaMail API发送电子邮件的注意事项、发送附件等

    作者:Stevedash 发表于:2023年8月13日 15点48分 来源:Java 发送邮件 | 菜鸟教程 (runoob.com) 电子邮件在现代通信中扮演着至关重要的角色,而在Java编程中,我们可以利用JavaMail API来方便地实现发送电子邮件的功能。本篇博客将向您介绍如何使用JavaMail API来发送电子邮件,以及一些

    2024年02月13日
    浏览(49)
  • c++实现smtp发送邮件,支持ssl的465端口发送,支持附件、一次发送多人、抄送等

    c++实现smtp发送邮件,支持ssl的465端口发送,支持附件、一次发送多人、抄送等。 这里只使用了openssl库(用来支持ssl的465端口),其他部分是原生c++,支持在win/linux运行。 网上很多都是原始的支持25端口,明文发送,这里介绍一下ssl思路 使用sockect编程和ssl,使用SMTP协议。 使

    2024年02月08日
    浏览(81)
  • 让自己开发的VBA应用能够批量发送邮件(可带多个附件)

    当我们开发了一个VBA应用,很多时候需要让它能够自动批量发送邮件。这时候,我们就需要使用到CDO了。CDO全称Collaboration Data Objects,即协作数据对象,是Office 软件不在产品安装的一部分。它是通过基于COM的API提供对Outlook兼容对象的访问的包。CDO有多个组件,其中Message组件

    2024年02月11日
    浏览(30)
  • 邮件发送,附件太大怎么办 → 那就用分卷压缩吧

    昨晚,老婆辅导女儿写作业 有一道形容妈妈的题,女儿写下了:我妈妈像一个暴躁的老虎 老婆拿起题册轻轻敲了下女儿,生气到:有这么形容你妈的吗 女儿:你看你现在 老婆:我有那么暴躁吗,你就不能说我妈妈像一个公主,温柔大方漂亮? 女儿:题目让我造句,没让我

    2024年02月08日
    浏览(83)
  • 泛微OA获取流程附件地址,发送邮件或上传到第三方系统中

    在泛微的流程开发当中,有些流程的数据、附件要上传到其它平台,与其它平台相互集成对接, 一般是在写Action事件时,就会自动把数据及附件上传到其它平台,以下内容是经过正常使用获取流程附件的业务 示例:泛微OA中流程附件

    2024年02月15日
    浏览(51)
  • # Linux下用mailx发送邮件,邮件内容在用户端变成了以为.bin为扩展名的邮件附件的问题解决

    这种情况一般存在于将【某文件内容】作为【邮件内容】时发生,你指定的那个文件中包含了Linux终端控制字符,把这些控制字符删除即可恢复正常。 附件的文件名一般为.bin结尾,也可能是其他。 如果按这个原文发送邮件,则会变成以.bin结尾的邮件附件 删除文件中的控制字

    2024年02月16日
    浏览(35)
  • java使用ews-java-api发送邮件(包括附件和内联图片处理)

    不废话,开整 注意:普通邮件详情和带内联图片邮件详情选择其一。 有疑问欢迎留言。

    2024年02月11日
    浏览(41)
  • Express实现定时发送邮件

    在开发中我们有时候需要 每隔 一段时间发送一次电子邮件 ,或者 在某个特定的时间进行发送邮件 , 无需手动去操作,基于这样的情况下我们需要用到了定时任务,一般可以写个定时器,来完成相应的需求,在 node.js 中自已实现也非常容易,接下来要介绍的是node-schedule来完

    2023年04月10日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包