javaMail中session的getDefaultInstance和getInstance的区别

 

何谓getDefaultInstance? 从处理流程中可以看出,首先是从缓存中查找是否有properties存在 如果存在,则加载默认的properties 如果不存在才加载用户自己定义的properties, 所以当一个应用为每个用户独立创建properties的时候,还是应该调用getInstance, 除非你希望有一个默认的properties让用户使用

问题找到了,因为它会首先去内存和系统文件中去找properties,所以不管我在页面改几次数据,其实在后台中生成session时都和系统启动时的一样,所以在MailUtil.sendTextMessage(mailSession,RptTaskMailConfig.Sender, receiver,null,mail_subject,mail_content,"GB2312",null);时session里的sender和传入的sender不一致,因此出错,修改Session.getDefaultInstance(props, authentic);Session.getInstance(props, authentic);后,可以正确发送修改帐号,密码等资料后的邮件.OK

最后再补充一下,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对象。

原文地址:http://muder2007.blog.163.com/blog/static/45933070200872025130613/

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`javax.mail.NoSuchProviderException: imap`异常通常是因为JavaMail API找不到IMAP Provider提供者类。这可能是由于以下原因之一: 1. 缺少IMAP Provider依赖项。你需要确保已在你的构建路径包含了`javax.mail`和`javax.mail.providers`包,以及IMAP Provider的实现类。你可以通过Maven或手动下载JavaMail API来获取这些依赖项。 2. IMAP Provider实现类名称不正确。你需要确保在你的代码正确地指定了IMAP Provider实现类的名称。例如,如果你使用的是JavaMail API的默认实现类,你应该使用以下代码: ```java Properties props = new Properties(); props.setProperty("mail.store.protocol", "imap"); Session session = Session.getDefaultInstance(props); Store store = session.getStore(); ``` 如果你使用的是其他IMAP Provider实现类,你需要在`props.setProperty("mail.store.protocol", "imap")`语句指定正确的实现类名称。 3. IMAP Provider实现类未正确注册。你需要在你的代码明确地注册IMAP Provider实现类。例如,如果你使用的是IMAPStore实现类,你可以使用以下代码: ```java Properties props = new Properties(); props.setProperty("mail.store.protocol", "imap"); Session session = Session.getInstance(props, null); session.setProvider(new com.sun.mail.imap.IMAPProvider()); Store store = session.getStore(); ``` 这将显式地注册IMAPProvider实现类,并解决NoSuchProviderException异常。 希望这些信息能够帮助你解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值