2016-06-29 4 views
0

this 튜토리얼을 사용하여 내 앱에서 이메일을 보냈습니다. 3 가지 앱에 동일한 코드를 사용했는데 모두 잘 돌아갔습니다. 하지만 지금은 몇 달 후 작동이 멈췄습니다. 가능한 모든 사이트를 검색했지만 그 중 아무도 나를 도왔습니다. 내 Gmail 계정에서 낮은 보안 설정을 시도하고 내 세션의 속성을 변경했지만 아무 효과가 없습니다. 정말 도움이됩니다.안드로이드가 더 이상 작동하지 않는 이메일을 보내고 있습니다

  Log.d("EmailSender","sending message"); 
      Properties props = new Properties(); 
      props.put("mail.smtp.host", host); 
      props.put("mail.smtp.socketFactory.port", "465"); 
      props.put("mail.smtp.socketFactory.class", 
        "javax.net.ssl.SSLSocketFactory"); 
      props.put("mail.smtp.auth", "true"); 
      props.put("mail.smtp.port", "465"); 
      Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { 
       protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication(user,pass); 
       } 
      }); 
      try { 
       Message message = new MimeMessage(session); 
       message.setFrom(new InternetAddress(user)); 
       message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(SharedPreferenceUtils.getUserEmail(getActivity()))); 
       message.setSubject(subject); 
       message.setContent(content, "text/html; charset=utf-8"); 

       //Transport.send(message); 
       Transport transport = session.getTransport("smtps"); 
       transport.connect (host, Integer.parseInt(port), user, pass); 
       transport.sendMessage(message, message.getAllRecipients()); 
       transport.close(); 
       Log.d("EmailSender", "message sent"); 
      } catch (MessagingException e) { 
       e.printStackTrace(); 
       throw new RuntimeException(e); 
      } 

내 오류 : 로그에서

java.net.ConnectException: failed to connect to smtp.gmail.com/2a00:1450:4013:c01::6d (port 465) after 90000ms: isConnected failed: ENETUNREACH (Network is unreachable) 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1391) 
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412) 
    at javax.mail.Service.connect(Service.java:288) 
    at com.mihaela.myapp.ui.dialog.EnterPasswordDialog$SendMailTask.doInBackground(EnterPasswordDialog.java:222) 
    at com.mihaela.myapp.ui.dialog.EnterPasswordDialog$SendMailTask.doInBackground(EnterPasswordDialog.java:179) 
    at android.os.AsyncTask$2.call(AsyncTask.java:288) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
    at java.lang.Thread.run(Thread.java:818) 
    Caused by: java.net.ConnectException: failed to connect to smtp.gmail.com/2a00:1450:4013:c01::6d (port 465) after 90000ms: isConnected failed: ENETUNREACH (Network is unreachable) 
    at libcore.io.IoBridge.isConnected(IoBridge.java:267) 
    at libcore.io.IoBridge.connectErrno(IoBridge.java:191) 
    at libcore.io.IoBridge.connect(IoBridge.java:127) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:188) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:461) 
    at java.net.Socket.connect(Socket.java:918) 
    at java.net.Socket.connect(Socket.java:844) 
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:233) 
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189) 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1359) 
     ... 10 more 
    Caused by: android.system.ErrnoException: isConnected failed: ENETUNREACH (Network is unreachable) 
    at libcore.io.IoBridge.isConnected(IoBridge.java:252) 
     ... 19 more 
+0

네트워크에 도달 할 수 없음을 나타냅니다. 인터넷에 연결되어 있습니까? 매니페스트에 인터넷 사용 권한이 설정되어 있습니까? –

+0

예, 인터넷에 연결했습니다. 그 허가는 처음부터있었습니다. 나는 또한 adb를 사용하여 그 웹 사이트에 ping을 시도했다. –

+0

이상합니다. 문제는 코드가 아닌 네트워크를 통해 이루어져야합니다. –

답변

0

:

java.net.ConnectException: failed to connect to smtp.gmail.com/2a00:1450:4013:c01::6d (port 465) after 90000ms: isConnected failed: ENETUNREACH (Network is unreachable)

네트워크에 연결할 수 없습니다. 코드는 괜찮아 보입니다. 따라서 문제는 네트워크에 있어야합니다. 연결 상태를 확인하십시오. 가능한 원인은 다음과 같습니다.

  1. 매우 느리거나 나쁜 네트워크입니다. 네트워크 변경을 시도하십시오.
  2. 매니페스트에서 인터넷 사용 권한을 사용할 수 없습니다 (문제가 설명 된 경우가 아니어야 함). 권한을 추가하십시오.

향후 네트워크 요청을 보내기 전에 네트워크 확인을 추가 할 수 있습니다. 이 스레드는 네트워크 연결을 확인하기위한 몇 가지 좋은 대답을 가지고 있습니다. How to check internet access on Android? InetAddress never times out

관련 문제