JavaMail在web容器中接收不到邮件内容解决办法

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容器中测试通过。