亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Android中利用Javamail發送Email

發布時間:2021-03-25 16:30:39 來源:億速云 閱讀:149 作者:Leah 欄目:移動開發

怎么在Android中利用Javamail發送Email?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

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

添加成功后項目就像這樣.

怎么在Android中利用Javamail發送Email

項目中添加Mail類

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調用

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>{ 
 //后面尖括號內分別是參數(例子里是線程休息時間),進度(publishProgress用到),返回值 類型 
 
 @Override 
 protected void onPreExecute() { 
 //第一個執行方法 
 Toast.makeText(getApplicationContext(), "Begin Send!", Toast.LENGTH_SHORT).show(); 
 super.onPreExecute(); 
 } 
 
 @Override 
 protected String doInBackground(Integer... params) { 
 //第二個執行方法,onPreExecute()執行完后執行 
 // 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) { 
 //這個函數在doInBackground調用publishProgress時觸發,雖然調用時只有一個參數 
 //但是這里取到的是一個數組,所以要用progesss[0]來取值 
 //第n個參數就用progress[n]來取值  
 super.onProgressUpdate(progress); 
 } 
 
 @Override 
 protected void onPostExecute(String r) { 
 //doInBackground返回時觸發,換句話說,就是doInBackground執行完后觸發 
 //這里的result就是上面doInBackground執行后的返回值,所以這里是"執行完畢" 
 //setTitle(result); 
 super.onPostExecute(r); 
 } 
 
 } 
 
}

這里用到了AsyncTask,應為直接在UI線程中連接互聯網的話,或爆 android.os.NetworkOnMainThreadException異常。

布局文件

主界面的布局文件,非常簡單。

<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>

運行效果圖:

怎么在Android中利用Javamail發送Email

點擊發送后

怎么在Android中利用Javamail發送Email

關于怎么在Android中利用Javamail發送Email問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

文昌市| 磴口县| 宁波市| 阿瓦提县| 渑池县| 琼海市| 定结县| 岫岩| 中阳县| 绥棱县| 五寨县| 通州区| 柯坪县| 乡城县| 莒南县| 上杭县| 普洱| 龙泉市| 环江| 贡觉县| 宾阳县| 陇西县| 邵东县| 建德市| 河源市| 凤冈县| 山东| 东乌珠穆沁旗| 阳曲县| 安义县| 伊春市| 崇明县| 石狮市| 休宁县| 大田县| 静乐县| 五台县| 合作市| 西充县| 永城市| 大冶市|