Android中使用javamail发送邮件附件


使用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.   
  5.   
  6. import java.util.Properties;  
  7. import javax.activation.DataHandler;  
  8. import javax.activation.FileDataSource;  
  9. import javax.mail.*;  
  10. import javax.mail.internet.*;  
  11. 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.   
  11.   
  12.     protected PasswordAuthentication getPasswordAuthentication()   
  13.     {  
  14.       return new PasswordAuthentication(strUser, strPwd);  
  15.     }  
  16. }  
  17.   
  18.   
  19.   
  20. 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)  
  21.     {  
  22.         Log.v("lengfeng","send_mail_file");  
  23.   
  24.   
  25.         String host = str_smtp;   //发件人使用发邮件的电子信箱服务器   
  26.         String from = str_from_mail;    //发邮件的出发地(发件人的信箱)   
  27.         String to   = str_to_mail;   //发邮件的目的地(收件人信箱)   
  28.   
  29.   
  30.         Log.v("lengfeng",str_smtp);  
  31.         Log.v("lengfeng",str_from_mail);  
  32.         Log.v("lengfeng",str_to_mail);  
  33.           
  34.         Properties props = System.getProperties();// Get system properties   
  35.   
  36.   
  37.           
  38.         props.put("mail.smtp.host", host);// Setup mail server   
  39.   
  40.   
  41.           
  42.         props.put("mail.smtp.auth""true"); //这样才能通过验证   
  43.   
  44.   
  45.         MyAuthenticator myauth = new MyAuthenticator(str_user, str_pass);// Get session   
  46.           
  47.         Session session = Session.getDefaultInstance(props, myauth);  
  48.   
  49.   
  50.          
  51.         MimeMessage message = new MimeMessage(session); // Define message   
  52.          
  53.   
  54.   
  55.          
  56.         try {  
  57.             message.setFrom(new InternetAddress(from)); // Set the from address   
  58.         } catch (AddressException e) {  
  59.             e.printStackTrace();  
  60.         } catch (MessagingException e) {  
  61.             e.printStackTrace();  
  62.         }  
  63.   
  64.   
  65.           
  66.         try {  
  67.             message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));// Set the to address   
  68.         } catch (AddressException e) {  
  69.             e.printStackTrace();  
  70.         } catch (MessagingException e) {  
  71.             e.printStackTrace();  
  72.         }  
  73.   
  74.   
  75.           
  76.         try {  
  77.             message.setSubject(str_title);// Set the subject   
  78.         } catch (MessagingException e) {  
  79.             e.printStackTrace();  
  80.         }  
  81.   
  82.   
  83.           
  84.         try {  
  85.             message.setText(str_body);// Set the content   
  86.         } catch (MessagingException e) {  
  87.             e.printStackTrace();  
  88.         }  
  89.   
  90.   
  91.           
  92.         MimeBodyPart attachPart = new MimeBodyPart();   
  93.         FileDataSource fds = new FileDataSource(str_file_path); //打开要发送的文件   
  94.         try {  
  95.             attachPart.setDataHandler(new DataHandler(fds));  
  96.         } catch (MessagingException e) {  
  97.             e.printStackTrace();  
  98.         }   
  99.         try {  
  100.             attachPart.setFileName(fds.getName());  
  101.         } catch (MessagingException e) {  
  102.             e.printStackTrace();  
  103.         }   
  104.           
  105.           
  106.         MimeMultipart allMultipart = new MimeMultipart("mixed"); //附件   
  107.         try {  
  108.             allMultipart.addBodyPart(attachPart);//添加   
  109.         } catch (MessagingException e) {  
  110.             e.printStackTrace();  
  111.         }   
  112.         try {  
  113.             message.setContent(allMultipart);  
  114.         } catch (MessagingException e) {  
  115.             e.printStackTrace();  
  116.         }   
  117.         try {  
  118.             message.saveChanges();  
  119.         } catch (MessagingException e) {  
  120.             e.printStackTrace();  
  121.         }   
  122.   
  123.   
  124.           try {  
  125.             Transport.send(message);//开始发送   
  126.         } catch (MessagingException e) {  
  127.             e.printStackTrace();  
  128.         }          
  129.           
  130.         }   

相关内容