2014-10-07 2 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 서버가 기기에 있습니까? 아니? 그래서 localhost를 사용하는 이유는 무엇입니까? – Selvin

+0

아니요? 그래서 내가 무엇을 사용해야합니까? –

+0

FSM save us !!! 그게 명백한가요? SMTP 서버의 주소 – Selvin

답변

1

SMTP 서버를 사용하여 메일을 보낼 수 있습니다. SMTP 서버가 응용 프로그램을 실행하는 장치에 없다면 전자 메일을 보낼 수있는 SMTP 주소를 제공해야합니다. 실제로 SMTP 세부 정보가 올바르지 않으면 응용 프로그램이 전자 메일을 성공적으로 보내지 못할 것으로 예상됩니다.

+0

내 MailSender 클래스의 smtp 설정이 잘못되어 정의 된 호스트가 아닌 localhost로 설정을 되 돌리는 중입니다. –