日期:2014-05-18  浏览次数:21017 次

Java实现一次性群发上百万封邮件
公司最近要做群发邮件功能,是发给上百万客户;

可是这个群发量大会导致很多问题

      1、海量邮件群发:要保证群发系统稳定性,能支持日处理百万级千万级的海量投递;

  2、IP进入黑名单:能处理IP地址或域名被邮件运营商列为黑名单问题;

  3、成功送达率:在发布内容合法的情况下,如何直达用户收件箱的问题;

我是想起个定时任务每天晚上执行,上百万邮箱地址要从数据查询出来,这样一次性放到内存中也会出问题
,求大神给出技术解决方案;
------解决方案--------------------
第一个问题:百万级的邮箱地址并不是什么很大的数据,可以利用多线程的方式每个线程分发里面的部分(可以按百分比)。
第二个问题:防止ip被拉黑,可以用使用代理的ip,代理ip可以直接百度或google搜索很多几乎有上千个代理服务器,楼主只要在每个线程分发的时候循环使用不同的ip发送。
第三个问题:内容只有合法了,要光用2的方案ip代理还不够,因为现在的邮箱也会判断你的发件人如果在非常短的时间,连续的发送,也会拉黑的,所以楼主在用多线程ip代理分发时还要控制分发的时间,也就是没发一条邮件能停顿下时间,最好用多个邮箱发件。
多个邮箱多个线程ip代理,每发一封邮件就线程休眠下时间
------解决方案--------------------
在电脑足够好的情况下 可以通过连续缓存的方式做到
还有就是如果你想一次性读入 我劝你还是先计算了 对象大小问题

ip黑名单可以用代理

发送的邮件可以通过邮件服务器返回给你的statu或者code判断是否发送成功


------解决方案--------------------
群发一次性?一次性的话 那不是扯淡??
不是一次性那可以分割啊!!!!
100w 分割100份。或者更多。
也可以分时间段 。例如早上10点发1w条,  11 点发1w条

也就是时间和空间上做处理  

------解决方案--------------------
问题1:必须使用自己的邮件服务器,分页发送,就像普通的分页显示一样。
问题2:没有办法,完全取决于对方。代理可解决一部分问题
问题3:这个没法保证,就算你自己发一封也没法保证。
------解决方案--------------------
如果给Google的发,直接用Google的账户登录Google SMTP Server往里面发,这样不会被拉黑,速度也快。
不能用这种方式发的邮件再用普通的方式发。

这种方式需要准备很多账号。