亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 系統(tǒng) > Android > 正文

Android使用Javamail發(fā)送Email群發(fā)加附件

2019-10-21 21:26:36
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

之前寫(xiě)了一篇關(guān)于Android中發(fā)送Email的文章,里面用到的是隱式的intent來(lái)激活系統(tǒng)自帶的郵件發(fā)送功能。

今天花了一天來(lái)自己實(shí)現(xiàn)這個(gè)郵件發(fā)送功能。

這里用gmail作為發(fā)送方的郵箱,其他網(wǎng)易,新浪什么的應(yīng)該也ok,QQ貌似不行。

下面是實(shí)現(xiàn)步驟及相關(guān)代碼。

項(xiàng)目添加jar包

將activation.jar,additionnal.jar,mail.jar放到項(xiàng)目的libs 文件夾。然后在項(xiàng)目中選中這三個(gè)包,右擊->Build Path->Add to buildPath.

添加成功后項(xiàng)目就像這樣.

Android,Javamail,發(fā)送,Email

項(xiàng)目中添加Mail類(lèi)

package com.example.mailtest;import java.util.Date; import java.util.Properties; import javax.activation.CommandMap; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.activation.MailcapCommandMap; import javax.mail.BodyPart; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart;   public class Mail extends javax.mail.Authenticator {  private String _user;  private String _pass;   private String[] _to;  private String _from;   private String _port;  private String _sport;   private String _host;   private String _subject;  private String _body;   private boolean _auth;   private boolean _debuggable;   private Multipart _multipart;    public Mail() {  _host = "smtp.gmail.com"; // default smtp server  _port = "465"; // default smtp port  _sport = "465"; // default socketfactory port   _user = ""; // username  _pass = ""; // password  _from = ""; // email sent from  _subject = ""; // email subject  _body = ""; // email body   _debuggable = false; // debug mode on or off - default off  _auth = true; // smtp authentication - default on   _multipart = new MimeMultipart();   // There is something wrong with MailCap, javamail can not find a handler for the multipart/mixed part, so this bit needs to be added.  MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();  mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");  mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");  mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");  mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");  mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");  CommandMap.setDefaultCommandMap(mc);  }   public Mail(String user, String pass) {  this();   _user = user;  _pass = pass;  }  public void setTo(String[] toArr) { this._to = toArr; }  public void setFrom(String string) { this._from = string; }  public void setSubject(String string) { this._subject = string; } public boolean send() throws Exception {  Properties props = _setProperties();   if(!_user.equals("") && !_pass.equals("") && _to.length > 0 && !_from.equals("") && !_subject.equals("") && !_body.equals("")) {  Session session = Session.getInstance(props, this);   MimeMessage msg = new MimeMessage(session);   msg.setFrom(new InternetAddress(_from));   InternetAddress[] addressTo = new InternetAddress[_to.length];  for (int i = 0; i < _to.length; i++) {  addressTo[i] = new InternetAddress(_to[i]);  }  msg.setRecipients(MimeMessage.RecipientType.TO, addressTo);   msg.setSubject(_subject);  msg.setSentDate(new Date());   // setup message body  BodyPart messageBodyPart = new MimeBodyPart();  messageBodyPart.setText(_body);  _multipart.addBodyPart(messageBodyPart);  // Put parts in message  msg.setContent(_multipart);  // send email  Transport.send(msg);   return true;  } else {  return false;  }  }   public void addAttachment(String filename) throws Exception {  BodyPart messageBodyPart = new MimeBodyPart();  DataSource source = new FileDataSource(filename);  messageBodyPart.setDataHandler(new DataHandler(source));  messageBodyPart.setFileName(filename);   _multipart.addBodyPart(messageBodyPart);  }   @Override  public PasswordAuthentication getPasswordAuthentication() {  return new PasswordAuthentication(_user, _pass);  }   private Properties _setProperties() {  Properties props = new Properties();   props.put("mail.smtp.host", _host);   if(_debuggable) {  props.put("mail.debug", "true");  }   if(_auth) {  props.put("mail.smtp.auth", "true");  }   props.put("mail.smtp.port", _port);  props.put("mail.smtp.socketFactory.port", _sport);  props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");  props.put("mail.smtp.socketFactory.fallback", "false");   return props;  }   // the getters and setters  public String getBody() {  return _body;  }   public void setBody(String _body) {  this._body = _body;  }   // more of the getters and setters ….. } 

MailActivity調(diào)用

package com.example.mailtest;  import java.util.Properties; import javax.mail.Address;import javax.mail.Message;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;    import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.app.Activity;import android.app.ProgressDialog;import android.util.Log;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.Toast; public class MailActivity extends Activity {  private Button sendBtn; private String username; private String password; private Handler sendHandler; private ProgressDialog progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mail); sendBtn=(Button)findViewById(R.id.btnSend); sendHandler = new Handler(); sendBtn.setOnClickListener(new View.OnClickListener() {  public void onClick(View v) {  SendTask sTask = new SendTask();  sTask.execute(); }  });   }   @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_mail, menu); return true; }    class SendTask extends AsyncTask<Integer, Integer, String>{  //后面尖括號(hào)內(nèi)分別是參數(shù)(例子里是線程休息時(shí)間),進(jìn)度(publishProgress用到),返回值 類(lèi)型   @Override  protected void onPreExecute() {  //第一個(gè)執(zhí)行方法  Toast.makeText(getApplicationContext(), "Begin Send!", Toast.LENGTH_SHORT).show();  super.onPreExecute();  }   @Override  protected String doInBackground(Integer... params) {  //第二個(gè)執(zhí)行方法,onPreExecute()執(zhí)行完后執(zhí)行  // TODO Auto-generated method stub  Mail m = new Mail("empty.shen@gmail.com", "*****");   String[] toArr = {"silangquan@gmail.com","k283228391@126.com"};  m.setTo(toArr);  m.setFrom("wooo@wooo.com");  m.setSubject("JavamailTest");  m.setBody("Email body.");   try { //If you want add attachment use function addAttachment. //m.addAttachment("/sdcard/filelocation");   if(m.send()) {   System.out.println("Email was sent successfully.");  } else {   System.out.println("Email was not sent."); }  } 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);  }  return "";  }   @Override  protected void onProgressUpdate(Integer... progress) {  //這個(gè)函數(shù)在doInBackground調(diào)用publishProgress時(shí)觸發(fā),雖然調(diào)用時(shí)只有一個(gè)參數(shù)  //但是這里取到的是一個(gè)數(shù)組,所以要用progesss[0]來(lái)取值  //第n個(gè)參數(shù)就用progress[n]來(lái)取值   super.onProgressUpdate(progress);  }   @Override  protected void onPostExecute(String r) {  //doInBackground返回時(shí)觸發(fā),換句話說(shuō),就是doInBackground執(zhí)行完后觸發(fā)  //這里的result就是上面doInBackground執(zhí)行后的返回值,所以這里是"執(zhí)行完畢"  //setTitle(result);  super.onPostExecute(r);  }   }  }

這里用到了AsyncTask,應(yīng)為直接在UI線程中連接互聯(lián)網(wǎng)的話,或爆 android.os.NetworkOnMainThreadException異常。

布局文件

主界面的布局文件,非常簡(jiǎn)單。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MailActivity" >  <TextView  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_centerHorizontal="true"  android:layout_centerVertical="true"  android:text="@string/hello_world" />  <Button  android:id="@+id/btnSend"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_alignParentLeft="true"  android:layout_alignParentTop="true"  android:layout_marginTop="19dp"  android:text="Send" /> </RelativeLayout>

運(yùn)行效果圖:

Android,Javamail,發(fā)送,Email

點(diǎn)擊發(fā)送后

Android,Javamail,發(fā)送,Email

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開(kāi)發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
亚洲视频免费看| 欧美成人做性视频在线播放| 国产区精品视频在线观看豆花| 91精品国产综合久久婷婷香蕉| 日日狠狠久久偷偷综合色| 成人三级视频在线观看一区二区| 视频在线这里都是精品| 性欧美视频videos6一9| www国产视频| 在线人成日本视频| 亚洲调教视频在线观看| 国产一区视频免费观看| 国产无套在线观看| 久久国产成人午夜av影院宅| 成人影院网站| 手机看片国产精品| 国产特级黄色录像| 蜜桃传媒视频麻豆第一区免费观看| 特黄特黄一级片| 天天操天天舔天天射| 96日本xxxxxⅹxxx17| 免费看黄色网| 国产成人久久精品77777最新版本| 免费毛片a线观看| 尤物网站在线观看| 国产一区激情| 黄色片网站在线| 免费看电影在线| 久久人人爽人人爽人人片av免费| 99久久久无码国产精品性色戒| 又黄又免费的视频| 懂色av蜜桃av| 亚洲激情视频在线| 欧美1区2区3区| 91精品国产高清| 日韩在线观看中文字幕| 国产日韩欧美大片| 很污很黄的网站| 一本久道久久综合狠狠爱亚洲精品| 久久综合国产精品| 日本一区二区在线播放| 丰满人妻av一区二区三区| 欧美日韩不卡在线视频| 日韩综合一区二区三区| 蜜桃一区二区三区在线| 日韩大片在线永久免费观看网站| 九九九九久久久久| 成人h动漫精品一区二| 亚洲一区中文字幕永久在线| 岛国视频免费在线观看| 秋霞在线观看一区二区三区| 国产精品一区久久久久| 久久久电影免费观看完整版| 91精品久久久久久蜜臀| 性色av一区二区咪爱| 男男成人高潮片免费网站| 91精品国产91久久久久久最新| 久久精品国产精品青草色艺| 精品一区二区日韩| 亚洲宅男网av| 欧美亚洲国产视频| 小小的日本在线观看免费色网| 成人晚上爱看视频| 亚洲一区免费| 亚洲欧美日韩免费| 欧洲美女亚洲激情| 国产精品伦一区二区三区视频| 国产精品99爱免费视频| 在线观看日韩中文字幕| 97精品中文字幕| www.蜜臀av.com| 成人性生交大片免费看视频r| 欧美日韩一区二区三区视视频| 波多野结衣不卡视频| 日韩av二区在线播放| 久久久五月天| 亚洲精品免费在线看| 91精品一区二区三区四区| 国语一区二区三区| 性娇小13――14欧美| 91精品国产乱码久久久久久久久| 精品无吗乱吗av国产爱色| h网站在线观看| 国产日韩中文在线中文字幕| 四虎www4hu永久免费| 亚洲精品韩国| 日韩福利视频一区| 国产一级性片| 任你躁在线精品免费| 88国产精品欧美一区二区三区| 在线中文字幕亚洲| 国产伦精品一区二区三区在线观看| 91精品婷婷色在线观看| 日韩av片子| 五月天黄色网址| 四虎国产精品成人免费4hu| 国产女同在线观看| 综合国产精品| 日本综合视频| 奇米色欧美一区二区三区| 国产精品专区第二| 国产免费视频一区二区三区| 欧美日韩一区二区三区在线| 激情自拍一区| 菠萝蜜视频在线观看www入口| 136国产福利精品导航| 九九综合在线| 91久久在线播放| 四虎影视国产精品| 最美情侣韩剧在线播放| 黄色高清无遮挡| www.26天天久久天堂| 自拍偷拍免费精品| 精品一区在线视频| 日韩在线一区视频| 久草视频观看| 性感女国产在线| 免费无遮挡无码永久在线观看视频| 免费在线观看国产黄| 国产日韩精品视频一区二区三区| 亚洲精品乱码日韩| 一级久久久久久久| 拍拍拍999自拍偷| avtt天堂资源网| 久久99精品国产99久久6尤物| 成人在线免费观看视频网站| 一区二区三区欧美日| 亚洲图片在区色| 粉嫩的18在线观看极品精品| 亚洲精品va| 先锋av资源网| 一区二区成人免费视频| 蜜桃传媒入口| 精品丝袜一区二区三区| 久久亚洲av午夜福利精品一区| 久久国产精品99精品国产| 亚洲天堂一区二区三区| 国产精品无码久久久久成人app| 粉嫩av一区二区三区天美传媒| 91香蕉在线观看| 国产免费无遮挡吸奶头视频| 好男人在线视频www| 欧美二区三区的天堂| 亚洲黄色在线观看视频| 日韩国产精品亚洲а∨天堂免| 亚洲欧美日韩国产综合在线| 在线观看一区二区三区三州| 成人区精品一区二区婷婷| 特黄aaaaaaaaa毛片免费视频| 亚洲人成电影院在线观看| 中文字幕一区二区三区视频| 欧美videos粗暴高清性| 中文字幕亚洲欧洲| 超碰人人cao| 久久久精品视频成人| 亚洲精品中文字幕乱码三区91| 少妇无码av无码专区在线观看| 免费国产视频| 亚洲中文字幕一区二区| 日韩精品视频在线看| 日本激情视频网站| 不卡av电影在线| 91黄色免费版| a视频免费观看| 国产欧美综合在线观看第十页| 黄一区二区三区| 久久久久亚洲蜜桃| 欧美日韩国产成人在线观看| 午夜精品久久久久久99热软件| 成人av男人的天堂| 四虎国产精品永久在线| 国产欧美一区二区精品忘忧草| 欧美人妖在线观看| 亚洲第一福利在线观看| xxww在线观看| 99影视tv| 国产中文字幕av| 亚洲日本一区二区三区在线| 91夜夜蜜桃臀一区二区三区| 妺妺窝人体色www看人体| 潘金莲一级淫片aaaaaa播放| 国产精品国产三级国产专区52| 一区二区中文视频| 麻豆短视频在线观看| 国产无套精品一区二区三区| 免费看美女视频在线网站| 黄色国产一级视频| 久久激情视频免费观看| 热久久免费视频| 中国av一区二区三区| 国产精品久久久久999| 国产网站在线看| 极品久久久久久久| 制服视频三区第一页精品| 婷婷av一区二区三区| 美女视频黄免费的久久| 日日摸夜夜添夜夜添国产精品| 欧美性xxxx18| 一区二区三区产品免费精品久久75| 免费的色视频| 成人拍拍拍在线观看| 亚洲一区国产精品| 波多野结衣在线观看一区二区| 97人人澡人人爽91综合色| 狠狠色综合网站久久久久久久| 1024在线视频| 香蕉视频一区二区三区| 欧美色欧美亚洲高清在线视频| 欧美成人一区二区三区四区| 国产美女被下药99| 成人亚洲欧美一区二区三区| av网站免费线看精品| 轻轻草在线视频| 亚洲女同女同女同女同女同69| 国产成人亚洲精品无码h在线| 日本一区免费在线观看| 日韩欧美国产黄色| 色wwwwww| 日本wwww视频| 日韩一区免费视频| 蜜桃av麻豆av天美av免费| 亚洲亚洲精品在线观看| 好吊色视频一区二区三区| 亚洲乱码电影| 日本免费黄色| 欧美精品videosex牲欧美| 亚洲黄网在线观看| 国产女人av| 午夜国产一级| 日本女优爱爱视频| 一本一道精品欧美中文字幕| 亚洲国产成人午夜在线一区| 国模大尺度私拍在线视频| 日韩有码欧美| 日韩av免费看网站| 欧美人妻一区二区| 国产 欧美 自拍| 蜜桃网站成人| 成人福利视频在| 国产亚洲欧美另类中文| 国产精品久久影院| 亚洲人成影院在线| 国产亚洲精品aa午夜观看| 久久青青草视频| 国产精品久久久久久| 在线看黄网站| 欧洲成人午夜免费大片| 人妻精品一区二区三区| 国产综合中文字幕| 天海翼中文字幕| 欧美精品免费播放| 亚洲一线二线三线视频| 日本一本草久在线中文| xxxx.欧美| 亚洲精品91天天久久人人| 自拍偷拍第9页| 亚洲三区在线观看无套内射| 久久成人在线视频| 视频在线观看一区| 欧美一区二区综合| 日本成人小视频| 亚洲大胆美女视频| 亚洲最大福利网站| 欧美综合在线视频| 国产精品xxx| 久久99免费视频| 嫩草影院一区二区| 亚洲黄页在线观看| 欧美性videos高清精品| 国模套图日韩精品一区二区| 久久久久久久久久久久久久久久久久久久| 久久久国产精品麻豆| 亚洲第一第二区| 中文在线手机av| 可以www视频| 1区2区3区精品视频| 成年人在线免费看片| 美女被男人操网站| 中文在线观看视频| 欧美激情福利| 一本色道久久加勒比88综合| 91久久精品国产91性色| 日韩三级免费观看| 黄色av一区二区| 奇米影视四色在线| 美女网站视频久久| 日韩欧美中文字幕在线观看| 国产精久久久久久| 青青草国产在线| 成人四虎影院| 欧美一区二区三区久久久| 欧美精品久久久久久久久老牛影院| 日韩美女国产精品| 久久中文字幕人妻| 久久看片网站| 中文字幕亚洲无线码在线一区| 日韩免费一区| 欧美午夜不卡影院在线观看完整版免费| 亚洲福利在线视频| 91丝袜高跟美女视频| 亚洲美女性生活| 免费在线观看a视频| 成人全视频在线观看在线播放高清| 久久精品影视大全| 国产精美视频| 国产无遮挡又黄又爽又色视频| 精品人妻一区二区免费视频| 国产乱国产乱老熟300| 欧美人与禽猛交乱配视频| 国内精彩免费自拍视频在线观看网址| www.555国产精品免费| 黄页网站免费在线观看| 欧美肥婆xxxx欧美另类| 亚洲国产精品va在线看黑人动漫| jlzzjlzz国产精品久久| 欧美一级欧美三级在线| 在线观看av的网站| 一级毛片免费高清中文字幕久久网| 91精品久久久久久久99蜜桃| 一级特黄aaaaaa大片| 欧美激情中文不卡| 欧美在线高清视频| 欧美午夜在线| 成人精品在线播放| 久久久久久久麻豆| 久久福利精品| 意大利激情丛林无删减版dvd| 欧美中文在线|