1
我想要的電子郵件發送到指令:https://cloud.google.com/appengine/docs/java/mail/sending-mail-with-mail-api與谷歌應用引擎發送郵件
但我得到這個錯誤:
com.google.apphosting.api.ApiProxy$CancelledException: The API call remote_socket.CreateSocket() was explicitly cancelled.
at com.google.apphosting.api.ApiProxy.makeSyncCall (ApiProxy.java:118)
at com.google.apphosting.api.ApiProxy.makeSyncCall (ApiProxy.java:67)
at com.google.appengine.api.socket.SocketApiHelper.apiProxyMakeSyncCall (SocketApiHelper.java:93)
at com.google.appengine.api.socket.SocketApiHelper.makeSyncCall (SocketApiHelper.java:58)
at com.google.appengine.api.socket.AppEngineSocketImpl.createSocket (AppEngineSocketImpl.java:497)
at com.google.appengine.api.socket.AppEngineSocketImpl.connectToAddress (AppEngineSocketImpl.java:362)
at com.google.appengine.api.socket.AppEngineSocketImpl.connect (AppEngineSocketImpl.java:352)
at java.net.Socket.connect (Socket.java:612)
at java.net.Socket.connect (Socket.java:540)
at com.sun.mail.util.SocketFetcher.createSocket (SocketFetcher.java:321)
at com.sun.mail.util.SocketFetcher.getSocket (SocketFetcher.java:237)
at com.sun.mail.smtp.SMTPTransport.openServer (SMTPTransport.java:1927)
at com.sun.mail.smtp.SMTPTransport.protocolConnect (SMTPTransport.java:654)
at javax.mail.Service.connect (Service.java:295)
at javax.mail.Service.connect (Service.java:176)
at javax.mail.Service.connect (Service.java:125)
at javax.mail.Transport.send0 (Transport.java:194)
at javax.mail.Transport.send (Transport.java:124)
at ru.usyservice.model.mail.PopupMail.sendMail (PopupMail.java:88)
可能是什麼原因?
我的方法:
private void sendMail(String mail) {
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("[email protected]", "Mr.x"));
msg.addRecipient(Message.RecipientType.TO,
new InternetAddress("[email protected]", "Mr.y"));
msg.setSubject("Test mail");
msg.setContent(mail, "text/html; charset=\"UTF-8\"");
Transport.send(msg);
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
大約一年前,我在Google App Engine上遇到了類似但不相同的問題。解決方法是我需要創建一個單獨的隊列/線程,以便在發送失敗時重試郵件。 Google App Engine有一個爲您提供此功能的服務,它們提供示例代碼;這不是你可以自己編碼的東西,因爲多線程代碼並不真正支持。 另外我還記得我需要遵循一些步驟來設置郵件發送並提高我的帳戶被允許發送的最大數量。 – mba12
非常感謝您的幫助! 但是,我在pom.xml中發現了一個錯誤 –