Android開發&send email

Android接收和發送郵件是通過郵局協議(pop3)和簡單郵件傳輸協議(smtp)實現的。
簡單的說:發送郵件時是先將郵件附加內容,發送地址,接收地址信息發送到指定的郵箱服務器(smtp服務器),然後smtp服務器會根據指定的接收地址尋求接收端smtp服務器,最後通過pop3協議從smtp服務器上獲取郵件。

圖片來源於百度詞條
圖片來源於百度詞條
~~~圖片來源百度

1.通過安卓內置的Gmail程序來發送郵件。

Intent intent=new Intent(Intent.ACTION_SEND);
//隱式調用Intent:“android.intent.action.SEND";
//“android.intent.action.SEND_TO"表示發送無附件的郵件。
//“android.intent.action.SEND_MULTIPLE"表示發送複雜大量附件的郵件
intent.setType("application/stream");
//設置郵件屬性,系統會自動根據上傳的內容進行推導,可以不設置。
intent.putExtra(Intent.EXTRA_EMAIL,emailReceiver.getText().toString());
//設置收件人
intent.putExtra(Intent.EXTRA_SUBJECT,subject.getText().toString());
//設置郵件主題
intent.putExtra(Intent.EXTRA_TEXT,emailText.getText().toString());
//設置郵件內容
intent.putExtra(Intent.EXTRA_BCC,emailSend.getText().toString());
//設置密送人(對方看不到密送人)
intent.putExtra(Intent.EXTRA_CC,emailSend.getText().toString());
//設置抄送人
email.putExtra(Intent.EXTRA_STREAM, uri);
//添加附件,uri表示具體文件uri。
startActivity(Intent.createChooser(intent, "choose the application"));
//createChooser相當於設定選擇應用程序的標題,因爲這個功能需要藉助其他的應用實現。

2. 引入mail等包,不通過Gmail直接發送郵件。

new Thread(new Runnable() {
      @Override
      public void run() {
          try {
              HtmlEmail htmlEmail=new HtmlEmail();
              htmlEmail.setHostName("smtp.139.com");
              //設置使用的smtp服務器
              htmlEmail.setTLS(true);
              htmlEmail.setSSL(true);
              //允許TLS(安全套接層)和SSl(傳輸層安全)協議
              htmlEmail.setCharset("gbk");
              //設置郵件編碼方式
              MimeMultipart multipart=new MimeMultipart();
              MimeBodyPart bodyPart=new MimeBodyPart();
              String file="文件路徑";
              if(!TextUtils.isEmpty(file)){
                  try {
                      bodyPart.attachFile(file);
                      multipart.addBodyPart(bodyPart);
                      htmlEmail.addPart(multipart);
                  } catch (IOException e) {
                      ;//處理文件路徑錯誤。
                  }
              }
              htmlEmail.setSubject(subject);
              htmlEmail.addTo(emailReceiver);
              htmlEmail.setFrom("發送人郵箱");
              htmlEmail.setAuthentication("[email protected]", "XXX");
              //連接發送端服務器,第一個參數是郵箱地址,第二個爲郵箱密碼 
              htmlEmail.setMsg("郵件內容XXX");
              htmlEmail.send();
              Message m=new Message();
              m.what=2;
              handler.sendMessage(m);
          } catch (Exception e) {
              Message m=new Message();
              m.what=1;
              m.obj=e.toString();
              handler.sendMessage(m);
              //把message交給主線程操作。
          }
      }
  }).start();
  //發送郵件最好開啓新線程,避免線程阻塞
  //本實例只供參考,代碼並不能直接運行

qq郵箱服務器經常出問題,不建議使用;
emai等包可百度下載

Email包 點擊下載
Intent.type屬性與MIME類型 對照表

鏈接與圖片均爲他人作品,轉載請說明

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章