2014-10-07 24 views
-1

你好
我正在嘗試創建一個無需用戶交互(用戶將被通知正在發送的任何電子郵件通知用戶)發送電子郵件的Android應用程序。我使用這個JavaMail的:http://code.google.com/p/javamail-android/downloads/list而下面這個實例:http://www.jondev.net/articles/Sending_Emails_without_User_Intervention_%28no_Intents%29_in_Android

但我收到以下錯誤:在沒有用戶交互的情況下使用javamail發送電子郵件 - java.net.ConnectException

10-07 09:23:10.373: E/MailApp(9173): Could not send email 
10-07 09:23:10.373: E/MailApp(9173): javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25; 
10-07 09:23:10.373: E/MailApp(9173): nested exception is: 
10-07 09:23:10.373: E/MailApp(9173): java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 25): connect failed: ECONNREFUSED (Connection refused) 
10-07 09:23:10.373: E/MailApp(9173): at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1391) 
10-07 09:23:10.373: E/MailApp(9173): at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412) 



代碼發送電子郵件:

Thread emailSendThread = new Thread(new Runnable() { 

    @Override 
    public void run() { 


      while (true) { 

       try { 
        Thread.sleep(100); 
       } 

       catch (InterruptedException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } 

        if (sendEmail == true) { 

         try { 

          MailSender m = new MailSender("[email protected]", "password"); 

          String[] toArr = {"[email protected]"}; 
          m.setTo(toArr); 
          m.setFrom("[email protected]"); 
          m.setSubject("This is an email sent using my Mail JavaMail wrapper from an Android device."); 
          m.setBody("Email body."); 

          try { 

           m.send(); 

           if(m.send()) { 
           Toast.makeText(MainActivity.this, "Email was sent successfully.", Toast.LENGTH_LONG).show(); 
           } else { 
           Toast.makeText(MainActivity.this, "Email was not sent.", Toast.LENGTH_LONG).show(); 
           } 
          } catch(Exception e) { 
           //Toast.makeText(MailApp.this, "There was a problem sending the email.", Toast.LENGTH_LONG).show(); 
           Log.e("MailApp", "Could not send email", e); 
          } 


         } 

         catch (Exception e) { 
          Log.e("email", "Error", e); 

         } 

          try { 
           Thread.sleep(100); 
          } 

          catch (InterruptedException e) { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
          } 


          sendEmail = false; 
        } 

      } 
    } 

}); 

我已經取代我電子郵件用戶名和密碼,例如在這段代碼中。
發送郵件我執行sendEmail = true;

+0

確實smtp服務器在設備上?沒有?那麼爲什麼要使用本地主機? – Selvin 2014-10-07 08:49:12

+0

不是?所以我應該使用什麼? – 2014-10-07 08:53:35

+0

FSM救我們!!!這不是很明顯嗎? SMTP服務器的地址 – Selvin 2014-10-07 08:55:17

回答

1

您只能使用SMTP服務器發送郵件。如果您的SMTP服務器不在運行該應用程序的設備上,那麼您需要提供可以發送該電子郵件的SMTP地址。實際上,如果SMTP詳細信息不正確,則預計應用程序不會成功發送電子郵件。

+0

我的MailSender類中的smtp設置是錯誤的,因此它將設置恢復爲localhost而不是定義的主機 – 2014-10-07 09:29:21

相關問題