2015-09-21 57 views
0
Session session = null; 
ProgressDialog pdialog = null; 
Context context = null; 
EditText reciep, sub, msg; 
String rec, subject, textMessage; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.b9); 

    context = this; 

    Button login = (Button) findViewById(R.id.btn_submit); 
    reciep = (EditText) findViewById(R.id.et_to); 
    sub = (EditText) findViewById(R.id.et_sub); 
    msg = (EditText) findViewById(R.id.et_text); 

    login.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    rec = reciep.getText().toString(); 
    subject = sub.getText().toString(); 
    textMessage = msg.getText().toString(); 
    Properties props = new Properties(); 
    props.put("mail.smtp.host", "smtp.gmail.com"); 
    props.put("mail.smtp.socketFactory.port", "587"); 
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.port", "587"); 

    session = Session.getDefaultInstance(props, new Authenticator() { 
     protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication("[email protected]", "xyz123"); 
     } 
    }); 

    pdialog = ProgressDialog.show(context, "", "Sending Mail...", true); 

    RetrieveFeedTask task = new RetrieveFeedTask(); 
    task.execute(); 
    } 

RetrieveFeedTask的Android发送邮件使用SMTP

class RetrieveFeedTask extends AsyncTask<String, Void, String> { 

    @Override 
    protected String doInBackground(String... params) { 

     try{ 
      Message message = new MimeMessage(session); 
      message.setFrom(new InternetAddress("[email protected]")); 
      message.setRecipients(Message.RecipientType.TO, InternetAddress. 
        parse(rec)); 
      message.setSubject(subject); 
      message.setContent(textMessage, "text/html; charset=utf-8"); 
      Transport.send(message); 
     } catch(MessagingException e) { 
      e.printStackTrace(); 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     pdialog.dismiss(); 
     reciep.setText(""); 
     msg.setText(""); 
     sub.setText(""); 
     Toast.makeText(getApplicationContext(), "Message sent",  Toast.LENGTH_LONG).show(); 
    } 
} 
} 

到Gmail和我收到以下错误我能不能接收邮件在我的收件箱

错误:

  javax.mail.MessagingException: Could not connect to SMTP host:   smtp.gmail.com, port: 587; 
      nested exception is: 
      avax.net.ssl.SSLHandshakeException: j  avax.net.ssl.SSLProtocolException: SSL  handshake aborted: ssl=0x755e6040: Failure in SSL library, usually a protocol error 
                            at javax.mail.Service.connect(Service.java:310) 
       at javax.mail.Service.connect(Service.java:169) 
       at javax.mail.Service.connect(Service.java:118) 
       at javax.mail.Transport.send0(Transport.java:188) 
       at javax.mail.Transport.send(Transport.java:118) 


       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) 
         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:841) 
       Caused by: javax.net.ssl.SSLHandshakeException:  javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x755e6040:  Failure in SSL library, usually a protocol error 
       error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown  protocol (external/openssl/ssl/s23_clnt.c:769 0x72fb0d74:0x00000000) 
      at mpl.getInputStream(OpenSSLSocketImpl.java:633) 
﹕  
       getSelectedText on inactive InputConnection 
        getSelectedText on inactive InputConnection 
        getSelectedText on inactive InputConnection 
        getSelectedText on inactive InputConnection 
        getSelectedText on inactive InputConnection 
        getSelectedText on inactive InputConnection 
        getSelectedText on inactive InputConnection 
        getSelectedText on inactive InputConnection 

getSelectedText on inactive InputConnection 
getTextBeforeCursor on inactive InputConnection 
+0

当我点击提交按钮会显示邮件发送,但我没有收到任何邮件在我的Gmail ID。 d有人帮助我。我非常感动 – user000

回答

0

如果您使用SSL,则正确的端口为465. 587适用于TLS

https://support.google.com/mail/answer/13287?hl=en

如果这不是问题,请尝试以下这个教程

http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/

+0

我需要一个与安卓相关的连接,我尝试了一些代码,但我没有得到 – user000

+0

任何新的错误消息还是它是一样的?另外,你有没有设置你的Gmail帐户接受来自不太安全的应用程序的登录尝试? http://stackoverflow.com/questions/21937586/phpmailer-smtp-error-password-command-failed-when-send-mail-from-my-server – Lukehey