无法通过Java servlet发送电子邮件

时间:2012-10-17 07:25:50

标签: java servlets smtp

尝试通过servlet中的gmail smtp发送电子邮件时出现此错误 它在测试时在本地工作,但不在谷歌引擎内 我在web-inf / libs下添加了libs [activation.jar-smtp.jar-mailapi.jar - mail.jar] 任何想法我怎么能解决它!!

错误: javax.servlet.ServletContext log: unavailable java.lang.SecurityException: SHA1 digest error for javax/mail/Message.class at com.google.appengine.run

代码快照:

 Properties props = new Properties();
 props.setProperty("mail.transport.protocol", "smtp");
 props.setProperty("mail.host", "smtp.gmail.com");
 props.put("mail.smtp.auth", "true"); 
 props.put("mail.smtp.port", "465"); 
 //props.put("mail.debug", "true");
 props.put("mail.smtp.socketFactory.port", "465");
 props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
 props.put("mail.smtp.socketFactory.fallback", "false");
 javax.mail.Session sess = javax.mail.Session.getInstance(props);
 Transport transport = sess.getTransport(); 
 transport.connect();
 transport.send(message);

2 个答案:

答案 0 :(得分:1)

您在Google应用引擎上cannot use签署了jar文件。

如网页所示,您应尝试取消签名,特别是mail.jar,因为错误表示javax/mail/Message.class,有关示例,请参阅this question

答案 1 :(得分:0)

App Engine的预编译与签名的JAR文件不兼容。如果您的应用程序是预编译的(默认值),则无法加载已签名的JAR文件。如果应用程序尝试加载已签名的JAR,则在运行时App Engine将生成与您类似的异常 No Signed JAR Files

有两种解决方法。

  1. Strip the JAR's signature
  2. Disabling Precompilation