我有一个独立于spring-stand的应用程序,它使用如下的简单弹簧电子邮件代码,to和消息是使用从map迭代的值构造的.

我已经对here问题提出了一些建议,但我需要一些具体的建议.下面是我的代码

for (Map.Entry> entry : testMap

.entrySet()) {

String key = entry.getKey();

StringBuilder htmlBuilder = new StringBuilder();

List valueList = entry.getValue();

for (Model value : valueList) {

htmlBuilder.append('List Values in the message');

}

mail.sendMail( msgFrom,body); // call my sendMail function in another class

}

发送邮件的代码:

MimeMessage email = mailSender.createMimeMessage();

MimeMessageHelper helper = new MimeMessageHelper(email, true);

helper.setFrom(new InternetAddress(from));

helper.setTo(new InternetAddress(to));

helper.setText(msg, true);

helper.addInline("identifier1234", res);

mailSender.send(email);

发送邮件需要3到4秒.我每天都有大约400,000的大用户列表要发送

我做错了什么或任何其他方法来加快这个过程.我需要专家建议

谢谢你的时间和帮助:)

解决方法:

恕我直言,发送邮件本身的过程可以改进,因为目前,你打开一个新的邮件服务器连接每条消息.您可以使用批量发送来改进它.

Spring MailSender接口本身支持发送一组消息而不是一个消息,因此您没有明确地处理JavaMail会话.您可以简单地修改实际以这种方式发送邮件的类

int batchSize = 16; // for example, adjust it to you needs

MimeMessage[] messages = new MimeMessage[batchSize];

int messageIndex = 0;

public void sendMail(String msgFrom, String body) {

// prepare MimeMessage

messages[messageIndex++] = email;

if (messagesIndex == batchSize) {

mailSender.send(messages);

messageIndex = 0;

}

public void sendLastMails() {

if (messageIndex > 0) {

MimeMessage[] lastMessages = new MimeMessage[messageIndex];

for (int i =0; i

lastMessages[i] = messages[i];

}

mailSender.send(lastMessages);

}

编辑:

sendLastMails方法可以在几个地方调用.首先,必须在单例bean的destroy方法中调用它,以确保在应用程序关闭时不会忘记任何消息.如果发送邮件的类是单例bean,则声明bean的destroy方法是sendLastMail或调用它就足够了.

然后,根据您自己的业务规则,可以在发送一批邮件后调用它.典型用法:在您的示例中,您有testMap.你应该这样重写它:

for (Map.Entry> entry : testMap

.entrySet()) {

...

mail.sendMail( msgFrom,body); // call my sendMail function in another class

}

mail.sendLastMails();

现在由您来决定这种改进是否足够或是否应该外包.

标签:bulk,java,performance,spring,email

来源: https://codeday.me/bug/20191003/1849302.html

java 批量发送邮件_java – 提高通过spring-mail发送批量电子邮件的性能相关推荐

  1. java 延时发送邮件_java编程实现邮件定时发送的方法

    本文实例讲述了java编程实现邮件定时发送的方法.分享给大家供大家参考,具体如下: 最近做项目时客户提出了一个需求:系统定时发送E-mail到其客户,达到通知的效果.先将实例分享给大家,如果确实有一些 ...

  2. 使用spring mail发送html邮件

    为什么80%的码农都做不了架构师?>>>    序 本文展示一下如何使用spring mail来发送html邮件. maven <!-- email --><dep ...

  3. java gmail 发送邮件_Java通过Gmail发送电子邮件

    大家好,我刚刚尝试获取一些Java代码,以通过gmail向Java用户发送电子邮件,这就是我所拥有的: @ManagedBean @ViewScoped public class email { // ...

  4. spring mail 发送html simple,SpringBoot整合Mail邮件发送

    Spring提供了非常好用的JavaMailSender接口实现邮件发送.在Spring Boot的Starter模块中也为此提供了自动化配置. 添加依赖 org.springframework.bo ...

  5. sql 发送邮件网络附件_利用VBA发送附件电子邮件

    大家好,我们今日讲解"利用VBA发送附件电子邮件",这节内容是"VBA信息获取与处理"教程中第五个专题"利用VBA发送电子邮件"的第一节. ...

  6. java的框架_java 三大框架——spring

    2.Sping架构 Spring框架是分模块存在,除了最核心的Spring Core Container(即Spring容器)是必要模块之外,其他模块都是可选,视需要而定. 官方文档Spring4.0 ...

  7. java 本地发送邮件_java在本地发送邮件可以,在服务器发送报错

    跟踪追查源码发现,java mail  SMTPTransport 类 会去读取hostname 主机名 注意:获取主机名之前会先去读取配置文件是否有配置,稍后会给出springboot配置. ses ...

  8. java webmethod 参数_java详解Spring接收web请求参数的方式

    本篇文章给大家带来的内容是java详解Spring接收web请求参数的方式 .有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 1 查询参数 请求格式:url?参数1=值1&参 ...

  9. java 切面 注解_Java自学之spring:使用注解进行面向切面编程(AOP)

    学习目的:学会使用注解进行面向切面编程(AOP),实现在面向切面编程(AOP)中,使用XML配置完成的操作. Part 1 修改cn.vaefun.dao.UserServiceImpl.java,在 ...

最新文章

  1. 软件开发模式对比(瀑布、迭代、螺旋、敏捷)
  2. 阿里开源Euler:国内首个工业级图表征学习框架
  3. Angular应用里child Component如何向parent Component发送事件
  4. 亚马逊推荐python_使用python查找amazon类别
  5. img2txt(二)
  6. GitHub优秀移动开源项目大集合
  7. jenkins相关下载链接
  8. 【计算机网络】1.1 计算机网络的基本概念
  9. 关键信息基础设施网络风险地图
  10. [转] 香港流行乐坛三十年
  11. Archlinux 的灵魂──PKGBUILD、AUR 和 ABS
  12. Java面试题(一)
  13. flush=true 的含义
  14. 契约锁助力仓库单据电子签:货物“入-检-调-提-出”再提速
  15. 一看就懂!!各进制转换方法
  16. 大数据面试总结《五》
  17. 【PS教学】简单几步画一个沙滩插画
  18. MATLAB 远程桌面无法连接的问题
  19. 继幻方、九坤后,哪家量化将在WAIC亮相?
  20. 【vscode基于clangd实现Android/Linux代码跳转】

热门文章

  1. php沙琪玛是什么来的,沙琪玛和琪玛酥区别 一起来看看
  2. js闭包-实现打字机动画效果
  3. JavaScript在chrome浏览器实现录屏功能
  4. 哈工大计算机研究生学费,哈尔滨工业大学研究生学费标准及奖助政策情况
  5. B 站 18 岁高中生火了:历时 200 天,成功造了个机器人!
  6. 基于飞凌NXP i.MX6UL实现中央空调集中器
  7. 国内课题基金英文翻译
  8. 智能家居应用开发实战附讲义源码(Android实战课程)
  9. 厉害的app应该注重哪些用户需求?
  10. 乐视乐Max Pro和Max65 Blade亮相