2012-10-17 54 views
2

我試圖通過gmail發送電子郵件時通過SMTP服務器內部smtp 本地測試時,但不是在谷歌引擎內工作 我在web-inf/libs下激活了庫[激活.jar-smtp.jar- mailapi.jar - mail.jar] 任何想法我可以修復它!無法通過Java servlet發送電子郵件

錯誤: javax.servlet.ServletContext log: unavailable java.lang.SecurityException: SHA1 digesterror 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

請格式化你的代碼.. – maxhax

+0

從錯誤時拋出跟蹤它看起來像你的代碼部署在AppEngine上。 如果我沒記錯,應用程序引擎不允許你發送電子郵件。 請重新檢查文檔 –

回答

1

你在谷歌應用程序引擎cannot use簽署的jar文件。

由於網頁上顯示,你應該嘗試unsign它,特別是mail.jar因爲錯誤指示javax/mail/Message.class,看到this question爲例

0

App Engine的預編譯未簽名的JAR文件兼容。如果您的應用程序是預編譯的(默認),它不能加載簽名的JAR文件。如果應用程序嘗試加載已簽名的JAR,則運行時App Engine將生成與您一樣的異常。
No Signed JAR Files

有兩種解決方法。

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

做了你的建議,從移除了mail.jar從清單-MF簽名的版本簽名:1.0 SHA1消化-清單: 去除SUN_MICR.SF 但是,我不再收到以前的錯誤,但一個新的按照下面的 我2012-10-17 12:44:13.080錯誤..... com.google.apphosting.api.ApiProxy $ CallNotFoundException:API包'remote_socket – user1752300

+0

看看這個https: //groups.google.com/forum/?fromgroups=#!topic/google-appengine/2pSRB8ADDd8 –

+0

https://groups.google.com/forum/?fromgroups=#!topic/google-appengine-java/H3v7qIM25ls http://stackoverflow.com/questions/12710865/the-api-package-remote-socket-or-call-resolve-was-not-fou nd-gae-java –