2

サーブレット内で gmail smtp 経由でメールを送信しようとすると、このエラーが発生します。テストするとローカルで動作しますが、Google エンジン内では動作しません。web-inf/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);
4

2 に答える 2

1

署名済みの jar ファイルは Google アプリ エンジンでは使用できません

Webページに示されているように、署名を解除するようにしてください。具体的にはmail.jar、エラーが示されているためです。例については、この質問javax/mail/Message.classを参照してください

于 2012-10-17T07:33:44.063 に答える
0

App Engine のプリコンパイルは、署名付き JAR ファイルと互換性がありません。アプリケーションがプリコンパイルされている場合 (デフォルト)、署名済みの JAR ファイルをロードできません。アプリケーションが署名付き JAR を読み込もうとすると、実行時に App Engine があなたのような例外を生成します。
署名された JAR ファイルがありません

回避するには 2 つの方法があります。

  1. JAR の署名を取り除く
  2. プリコンパイルの無効化
于 2012-10-17T07:37:13.783 に答える