2013-07-29 40 views
0

我一直在開發一個簡單的應用程序,它是當用戶填寫表單時發送給我的電子郵件。郵件API免費配額沒有結算?

我遵循教程和複製示例代碼。但是,當我嘗試運行它,它拋出以下異常:

javax.servlet.ServletContext log: Exception while dispatching incoming RPC call com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract int com.pablo.pabloweb.client.communication.SendEmailService.send(java.lang.String)' threw an unexpected exception: com.google.apphosting.api.ApiProxy$FeatureNotEnabledException: The Socket API will be enabled for this application once billing has been enabled in the admin console. at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:389) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:579) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248) ...

我的問題是:有沒有辦法使用郵件API不設置結算明細?通過任何方式,我的申請不可能超過限制。

在它需要的情況下,這是導致異常的代碼:

public boolean actualSend(String msgText, String subject) { 
    Properties props = new Properties(); 
    Session session = Session.getDefaultInstance(props, null); 

    try { 
     Message msg = new MimeMessage(session); 
     msg.setFrom(new InternetAddress("admin-gmail-email-address")); 
     msg.addRecipient(Message.RecipientType.TO, 
         new InternetAddress("another-personal-email-address")); 
     msg.setSubject(subject); 
     msg.setText(msgText); 
     Transport.send(msg); 
     return true; 
    } catch (AddressException e) { 
     return false; 
    } catch (MessagingException e) { 
     return false; 
    } 
} 

回答

2

如果你只是將郵件發送給自己,然後使用MailService的的sendToAdmins方法具有最高限額: https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/mail/MailService#sendToAdmins(com.google.appengine.api.mail.MailService.Message)

順便說一下,請注意,您的應用程序正在獲取套接字異常。這意味着您實際上並未使用App Engine郵件服務,幾乎肯定是因爲您未使用運行時中包含的JavaMail類。

無論如何,我建議切換到低級別的Mail API並使用sendToAdmins。但如果你不這樣做,請嘗試使用包含的JavaMail類,而不是將它們上傳到您的應用程序。

+0

謝謝,這似乎是解決方案。重新閱讀文檔我發現:「所有需要的JavaMail類都包含在App Engine SDK中,不要將Oracle®的JavaMail JAR添加到您的應用程序中,否則應用程序將拋出異​​常。」 但是,刪除jar會引發另一個異常:「java.lang.NoClassDefFoundError:javax/mail/internet/AddressException」 – NublicPablo

+0

我已經解決了這個問題。我沒有添加appengine-api-1.0-sdk。*。jar來構建路徑。現在它正在工作。 – NublicPablo

+0

很高興現在正在工作。 –