Session session = Session.getDefaultInstance(props, new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(account, password);
}}); 为什么有时候用Session.getDefaultInstance创建session会出现邮件发不出去的情况,错误信息:
java.lang.SecurityException: Access to default session denied
at javax.mail.Session.getDefaultInstance(Session.java:292)网上人说用javax.mail.Session.getInstance()方法来创建session对象就好了。
这是什么原因呢?
用javax.mail.Session.getInstance()会有什么潜在的问题吗?
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(account, password);
}}); 为什么有时候用Session.getDefaultInstance创建session会出现邮件发不出去的情况,错误信息:
java.lang.SecurityException: Access to default session denied
at javax.mail.Session.getDefaultInstance(Session.java:292)网上人说用javax.mail.Session.getInstance()方法来创建session对象就好了。
这是什么原因呢?
用javax.mail.Session.getInstance()会有什么潜在的问题吗?
解决方案 »
- 为什么我的JDK会出现这样的情况:
- **如何分离Java的界面代码与业务代码**
- JList中如何放入JTextField并且可以编辑(响应用户的操作)?
- 我需要在我的程序里建立100多个线程,几百万个对象,不知性能会怎么样?
- 怎么把JInternalFrame加上滚动条?
- 重装系统后连数据库出问题了,请帮我一下下。。
- JAVA初学者的困惑!!!
- java replace() 替换字符串导致字符编码出现乱码 求解决
- 有熟悉OA的朋友吗?发言有分
- Jbuilder中的Enumeration问
- 如果我写的一个方法 方法名和java定义的方法名相同 咋取
- 关于线程同步的一个问题.请大家帮忙看一下,谢谢
从处理流程中可以看出,首先是从缓存中查找是否有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,比如使用[email protected]发送1#邮件,使用[email protected]发送2#邮件,这时候,你就需要同时创建两个java.mail.Session对象。但是如果你仍然使用Session.getDefaultInstance创建session对象的话,你会发现,第二个username:[email protected]创建的session永远都和第一个一样,这是为什么呢?因为,getDefaultInstance是真正单例模式,而且,里面的username和password属性是final型的,无法更改。所以,你会发现两封email都是由[email protected]发出来的。所以这个时候你要使用javax.mail.Session.getInstance()方法来创建session对象。
为什么用Session.getDefaultInstance创建session会出现邮件发不出去的情况,错误信息:
java.lang.SecurityException: Access to default session denied
at javax.mail.Session.getDefaultInstance(Session.java:292)
,另外用getinstance会不会有什么潜在的问题。
getDefaultInstance 方便些