JavaMail在web容器中接收不到邮件内容解决方法
项目组用javamail接收邮件的时候发现一个很奇怪的问题,在main方法中测试可以获取到邮件的内容,但是再strut2的action中获取不到,折腾了一中午,吃完午饭回来又折腾了一小时才弄好,以下是解决方案。
由于系统中的javamail的jar包版本是1.4,j2ee也自带了javamail的jar包,貌似也是1.4版本。
原来出错是因为自己引入的jar包,后来换成eclipse中自带的,目录是plugins/javax.mail_1.4.0.v201005080615.jar.这个是我eclipse环境中的,具体名称可能因环境而异。
替换成eclipse自带的javamail的jar包后又发现两处错误。
一个是连接邮件服务器必须用Store store = session.getStore(URLName url);方式连接。
另一个是Session session = Session.getDefaultInstance(props,null);中第二个参数必须加的。如下:
Session session = Session.getDefaultInstance(props,new Authenticator() { protected javax.mail.PasswordAuthentication getPasswordAuthentication() { return new javax.mail.PasswordAuthentication("账号", "密码"); } });
用main方法测试通过,在web容器中测试通过。