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類型 對照表
鏈接與圖片均爲他人作品,轉載請說明