2016-06-29 9 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

関連する問題