java 批量发送邮件_java – 提高通过spring-mail发送批量电子邮件的性能
我有一个独立于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发送批量电子邮件的性能相关推荐
- java 延时发送邮件_java编程实现邮件定时发送的方法
本文实例讲述了java编程实现邮件定时发送的方法.分享给大家供大家参考,具体如下: 最近做项目时客户提出了一个需求:系统定时发送E-mail到其客户,达到通知的效果.先将实例分享给大家,如果确实有一些 ...
- 使用spring mail发送html邮件
为什么80%的码农都做不了架构师?>>> 序 本文展示一下如何使用spring mail来发送html邮件. maven <!-- email --><dep ...
- java gmail 发送邮件_Java通过Gmail发送电子邮件
大家好,我刚刚尝试获取一些Java代码,以通过gmail向Java用户发送电子邮件,这就是我所拥有的: @ManagedBean @ViewScoped public class email { // ...
- spring mail 发送html simple,SpringBoot整合Mail邮件发送
Spring提供了非常好用的JavaMailSender接口实现邮件发送.在Spring Boot的Starter模块中也为此提供了自动化配置. 添加依赖 org.springframework.bo ...
- sql 发送邮件网络附件_利用VBA发送附件电子邮件
大家好,我们今日讲解"利用VBA发送附件电子邮件",这节内容是"VBA信息获取与处理"教程中第五个专题"利用VBA发送电子邮件"的第一节. ...
- java的框架_java 三大框架——spring
2.Sping架构 Spring框架是分模块存在,除了最核心的Spring Core Container(即Spring容器)是必要模块之外,其他模块都是可选,视需要而定. 官方文档Spring4.0 ...
- java 本地发送邮件_java在本地发送邮件可以,在服务器发送报错
跟踪追查源码发现,java mail SMTPTransport 类 会去读取hostname 主机名 注意:获取主机名之前会先去读取配置文件是否有配置,稍后会给出springboot配置. ses ...
- java webmethod 参数_java详解Spring接收web请求参数的方式
本篇文章给大家带来的内容是java详解Spring接收web请求参数的方式 .有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 1 查询参数 请求格式:url?参数1=值1&参 ...
- java 切面 注解_Java自学之spring:使用注解进行面向切面编程(AOP)
学习目的:学会使用注解进行面向切面编程(AOP),实现在面向切面编程(AOP)中,使用XML配置完成的操作. Part 1 修改cn.vaefun.dao.UserServiceImpl.java,在 ...
最新文章
- 软件开发模式对比(瀑布、迭代、螺旋、敏捷)
- 阿里开源Euler:国内首个工业级图表征学习框架
- Angular应用里child Component如何向parent Component发送事件
- 亚马逊推荐python_使用python查找amazon类别
- img2txt(二)
- GitHub优秀移动开源项目大集合
- jenkins相关下载链接
- 【计算机网络】1.1 计算机网络的基本概念
- 关键信息基础设施网络风险地图
- [转] 香港流行乐坛三十年
- Archlinux 的灵魂──PKGBUILD、AUR 和 ABS
- Java面试题(一)
- flush=true 的含义
- 契约锁助力仓库单据电子签:货物“入-检-调-提-出”再提速
- 一看就懂!!各进制转换方法
- 大数据面试总结《五》
- 【PS教学】简单几步画一个沙滩插画
- MATLAB 远程桌面无法连接的问题
- 继幻方、九坤后,哪家量化将在WAIC亮相?
- 【vscode基于clangd实现Android/Linux代码跳转】