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个字符那是妥妥的有可能。这种截断文件名的模式在某些客户端,比如闪电邮中,并不能很好的支持。
参考资料来源:百度贴吧