2016-12-06 4 views
1

Я пытаюсь отправить электронную почту инструкции: https://cloud.google.com/appengine/docs/java/mail/sending-mail-with-mail-apiОтправка почты с помощью Google Apps Engine

Но я получаю эту ошибку:

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(); 
     } 
    } 
+0

Я столкнулся с аналогичной, но не идентичной проблемой около года назад в Google App Engine. Решение состояло в том, что мне нужно было создать отдельную очередь/поток, который будет повторять почту, если отправка не удалась. У Google App Engine есть служба, которая делает это для вас, и они предоставляют пример кода; это не то, что вы можете закодировать сами, потому что многопоточный код на самом деле не поддерживается. Также я помню, что мне нужно было выполнить некоторые шаги, чтобы настроить отправку почты и увеличить максимальное количество отправлений моей учетной записи. – mba12

+0

Большое спасибо за вашу помощь! Но, я нашел ошибку в pom.xml –

ответ

1

Я нашел ошибку в pom.xml, библиотека javax.mail была добавлена, но Google использует его LIB, который входит в AppEngine-апи-1,0-SDK Я удалил javax.mail, добавлю appengine-api-1.0-sdk в Maven, и это сработало!

Смежные вопросы