用多个邮件给多个邮件发邮件时遇到的问题以及解决
用spring封装的javamail
做邮件群发 涉及到负载均衡 比如 先用1@qq.com2@qq.com发1封邮件(这时候没报错)
再用3@qq.com给 4@qq.com发1封邮件(也没报错)
再用用zqqrt@163.com给yuu777@163.com发1封邮件(这时候就报错了:javax.mail.AuthenticationFailedException)
如果百度搜这个异常都是说用户名密码错误啊之类的
原因,但是用户名密码 smtp 端口我确定是没有问题的,如果 我单独用这个zqqrt@163.com发邮件也是没有问题的,这就奇怪了
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
而且 经过调试 上面的 username, password自始自终都是第一次的帐号密码 后来的163的值根本没传过来
后来总算找到一个帖子http://luckykapok918.blog.163.com/blog/static/20586504320123184515391/
找到了原因
邮件验证的时候 Session.getDefaultInstance(props, authentic);
何谓getDefaultInstance?
从处理流程中可以看出,首先是从缓存中查找是否有properties存在
如果存在,则加载默认的properties
如果不存在才加载用户自己定义的properties,
所以当一个应用为每个用户独立创建properties的时候,还是应该调用getInstance,
除非你希望有一个默认的properties让用户使用
它会首先去内存和系统文件中去找properties,所以不管我在页面改几次数据或者方法参数里传多少次不同的邮件帐号如果有smtp不同的都是按照第一次的来,其实在后台中生成session时都和系统启动时的一 样,所以在MailUtil.sendTextMessage(mailSession,RptTaskMailConfig.Sender,
receiver,null,mail_subject,mail_content,"GB2312",null);时session里的sender和传入的sender不一致,因此出错
报javax.mail.AuthenticationFailedException
session.getdefaultinstance和getinstance的区别 (引自网络):
如果想要同时使用两个帐号发送javamail,比如使用1@a.com发送1#邮件,使用2@a.com发送2#邮件,这时候,你就需要同时创建两个java.mail.Session对象。但是如果你仍然使用Session.getDefaultInstance创建session对象的话,你会发现,第二个username:2@a.com创建的session永远都和第一个一样,这是为什么呢?因为,getDefaultInstance是真正单例模式,而且,里面的username和password属性是final型的,无法更改。所以,你会发现两封email都是由1@a.com发出来的。所以这个时候你要使用javax.mail.Session.getInstance()方法来创建session对象。
所以如果 发邮件一直 只用一个邮件发 是不会有问题的
但是你会随机选择不同邮件服务地址来给不同人发邮件
就要注意这个问题
分享到:
相关推荐
javax.mail.AuthenticationFailedException异常处理。
通过java扩展包javax.mail-1.4.4.jar实现邮件发送功能。 import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart...
赠送jar包:javax.mail-1.6.2.jar; 赠送原API文档:javax.mail-1.6.2-javadoc.jar; 赠送源代码:javax.mail-1.6.2-sources.jar; 赠送Maven依赖信息文件:javax.mail-1.6.2.pom; 包含翻译后的API文档:javax.mail...
赠送jar包:javax.mail-1.5.6.jar; 赠送原API文档:javax.mail-1.5.6-javadoc.jar; 赠送源代码:javax.mail-1.5.6-sources.jar; 赠送Maven依赖信息文件:javax.mail-1.5.6.pom; 包含翻译后的API文档:javax.mail...
基于Maven的javax.mail发送邮件例子程序 pom.xml添加依赖jar: <groupId>javax.mail <artifactId>mail ${javamail.version} </dependency> <javamail.version>1.4.1</javamail.version> /* 功能:...
javax.mail.jar-Java发送邮件API。Apache Email基于javax.mail做了一个开源项目,参见:http://commons.apache.org/proper/commons-email/
赠送jar包:javax.mail-1.5.6.jar; 赠送原API文档:javax.mail-1.5.6-javadoc.jar; 赠送源代码:javax.mail-1.5.6-sources.jar; 赠送Maven依赖信息文件:javax.mail-1.5.6.pom; 包含翻译后的API文档:javax.mail...
javax.mail-1.6.0.jar包及移入maven仓库语句
通过错误描述我们发现java.lang.NoClassDefFoundError: javax/mail/MessagingException,主要说找不到这个类。通过查询发现是缺少javax.mail-api-1.6.2.jar和activation-1.1.1.jar包。在maven上下载即可
Files contained in javax.persistence.jar: META-INF/MANIFEST.MF javax.persistence.Access.class javax.persistence.AccessType.class javax.persistence.AssociationOverride.class javax.persistence....
Classes contained in javax.jms.jar: javax.transaction.xa.XAResource.class javax.jms.BytesMessage.class javax.jms.Message.class javax.jms.JMSException.class javax.jms.Destination.class javax.jms....
javax.mail.jar
发送邮件时这个包没导入报错javax.mail.jar!
JDK官方的Java Mail工具,可实现收发邮件。
javax.jms.BytesMessage.class javax.jms.Connection.class javax.jms.ConnectionConsumer.class javax.jms.ConnectionFactory.class javax.jms.ConnectionMetaData.class javax.jms.DeliveryMode.class javax.jms....
javax.mail-1.5.2源码
javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar ...
发邮件程序需要的:javax.mail包
javax.servlet的jar包,解决找不到javax.servlet.*等问题的!欢迎下载!!
javax.mail-1.5.6.jar