JavaMail邮件发送异常:{exception=java.lang.SecurityException: Access to default session
起因:最近使用JavaMail发送邮件,WEB容器我用的是resin,在做邮件发送测试的时候,第一次成功发送邮件,然后我有进行了热部署。应用自动重启后,我再次进行测试。结果异常出来了:
{exception=java.lang.SecurityException: Access to default session denied}
java.lang.SecurityException: Access to default session denied
at javax.mail.Session.getDefaultInstance(Session.java:321)
......?????
原先使用的代码如下:
Session session = Session.getDefaultInstance(properties, new Authenticator(){
???@Override
???public PasswordAuthentication getPasswordAuthentication(){
????return new PasswordAuthentication(USERNAME, PASSWORD);
???}
});
后来把代码修改为:
Session session = Session.getInstance(properties, new Authenticator(){
@Override
???public PasswordAuthentication getPasswordAuthentication(){
????return new PasswordAuthentication(USERNAME, PASSWORD);
???}
});
再次试验,发现不报异常了。
原因:Session.getDefaultInstance()是获得一个默认的共享session,而创建一个session可以使用Session.getInstance()。