java mail 发邮件 1000 封以上 怎么让邮件快速发送

Python09

java mail 发邮件 1000 封以上 怎么让邮件快速发送,第1张

...

String to="[email protected],[email protected],[email protected]"

InternetAddress[] toList = new InternetAddress().parse(to)

msg.setRecipients(Message.RecipientType.TO, toList)

...

Transport.send(msg)

或者直连邮件网关,并由邮件网关直接转发至收件箱所在的服务器,因此发送速度是基本不受限的。如果没有邮件网关,同时又不想自己完成相关功能,那么建议不要只让一台邮件服务器转发你的邮件,而是多连几台,将自己的邮件平均分配到每台邮件服务器上,这样就不会由于发送过多,而被拒了。

至于处理能力,可以提几点关于提高发送能力的建议

1.SMTP协议是支持长连接的协议,同时mail.jar实现了SMTP协议的连接、邮件发送及连接断开,至于对连接的维护没有涉及;同时Spring中的邮件支持是通过封装mail.jar实现的,但只提供了单笔发送和批量发送(均为短连接)。

2.如果使用长连接,建议再引入连接池,那样既便于维护连接,又可以提高连接的使用率。

MimeBodyPart 这个类中的 setFileName 方法 用到一个 ParameterList 在ParameterList 的 toString 类中找到下面一段:

if (v instanceof MultiValue) {// ....ns = name + i + "*"//...}} else if (v instanceof Value) {/// ...} else {if (value.length() >60 &&splitLongParameters &&encodeParameters) {int seg = 0 name += "*" /// ....}123456789101112131415

这个类在邮件附件属于 MultiValue 会把 名字用name + i 隔开 ,在名字大于 60个字符的时候也会主动截断,这也就是 javamail 中 附件的命名规则,名字太长会被截断~~!

中文在base64 加密后,超过60个字符那是妥妥的有可能。这种截断文件名的模式在某些客户端,比如闪电邮中,并不能很好的支持。

参考资料来源:百度贴吧