尝试通过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);
答案 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
有两种解决方法。