歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android中使用javamail發送郵件附件

Android中使用javamail發送郵件附件

日期:2017/3/1 10:40:38   编辑:Linux編程

使用javamail必須先下載3個JAR包並導入工程 activation.jar additonnal.jar mail.jar

導入方法為: project->properties->java build path->libraries->add external jars

然後在Android項目中添加網絡訪問權限

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

最後在程序中加載如下包

  1. import android.app.Activity;
  2. import android.os.Bundle;
  3. import android.util.Log;
  4. import java.util.Properties;
  5. import javax.activation.DataHandler;
  6. import javax.activation.FileDataSource;
  7. import javax.mail.*;
  8. import javax.mail.internet.*;
  9. import javax.mail.PasswordAuthentication;

調用函數代碼如下

  1. class MyAuthenticator
  2. extends javax.mail.Authenticator {
  3. private String strUser;
  4. private String strPwd;
  5. public MyAuthenticator(String user, String password)
  6. {
  7. this.strUser = user;
  8. this.strPwd = password;
  9. }
  10. protected PasswordAuthentication getPasswordAuthentication()
  11. {
  12. return new PasswordAuthentication(strUser, strPwd);
  13. }
  14. }
  15. public void send_mail_file(String str_to_mail,String str_from_mail,String str_smtp,String str_user,String str_pass,String str_title,String str_body,String str_file_path)
  16. {
  17. Log.v("lengfeng","send_mail_file");
  18. String host = str_smtp; //發件人使用發郵件的電子信箱服務器
  19. String from = str_from_mail; //發郵件的出發地(發件人的信箱)
  20. String to = str_to_mail; //發郵件的目的地(收件人信箱)
  21. Log.v("lengfeng",str_smtp);
  22. Log.v("lengfeng",str_from_mail);
  23. Log.v("lengfeng",str_to_mail);
  24. Properties props = System.getProperties();// Get system properties
  25. props.put("mail.smtp.host", host);// Setup mail server
  26. props.put("mail.smtp.auth", "true"); //這樣才能通過驗證
  27. MyAuthenticator myauth = new MyAuthenticator(str_user, str_pass);// Get session
  28. Session session = Session.getDefaultInstance(props, myauth);
  29. MimeMessage message = new MimeMessage(session); // Define message
  30. try {
  31. message.setFrom(new InternetAddress(from)); // Set the from address
  32. } catch (AddressException e) {
  33. e.printStackTrace();
  34. } catch (MessagingException e) {
  35. e.printStackTrace();
  36. }
  37. try {
  38. message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));// Set the to address
  39. } catch (AddressException e) {
  40. e.printStackTrace();
  41. } catch (MessagingException e) {
  42. e.printStackTrace();
  43. }
  44. try {
  45. message.setSubject(str_title);// Set the subject
  46. } catch (MessagingException e) {
  47. e.printStackTrace();
  48. }
  49. try {
  50. message.setText(str_body);// Set the content
  51. } catch (MessagingException e) {
  52. e.printStackTrace();
  53. }
  54. MimeBodyPart attachPart = new MimeBodyPart();
  55. FileDataSource fds = new FileDataSource(str_file_path); //打開要發送的文件
  56. try {
  57. attachPart.setDataHandler(new DataHandler(fds));
  58. } catch (MessagingException e) {
  59. e.printStackTrace();
  60. }
  61. try {
  62. attachPart.setFileName(fds.getName());
  63. } catch (MessagingException e) {
  64. e.printStackTrace();
  65. }
  66. MimeMultipart allMultipart = new MimeMultipart("mixed"); //附件
  67. try {
  68. allMultipart.addBodyPart(attachPart);//添加
  69. } catch (MessagingException e) {
  70. e.printStackTrace();
  71. }
  72. try {
  73. message.setContent(allMultipart);
  74. } catch (MessagingException e) {
  75. e.printStackTrace();
  76. }
  77. try {
  78. message.saveChanges();
  79. } catch (MessagingException e) {
  80. e.printStackTrace();
  81. }
  82. try {
  83. Transport.send(message);//開始發送
  84. } catch (MessagingException e) {
  85. e.printStackTrace();
  86. }
  87. }
Copyright © Linux教程網 All Rights Reserved