Google 在发表 Android 手机平台时,强调的是超强大的网络支持能力,因此,无论通过 GPRS、3G的电信网络或者是Wifi的无线WLAN网络,都能够发EMAIL。  
  
  发送邮件中使用的Intent 行为为 android.content.Intent.ACTION_SEND 。实际上在 Android 上使用的邮件发送服务是调用Gmail程序,而非直接使用SMTP的Protocol 。现在介绍本篇需要使用到的功能清单:

•验证用户输入是否为正确的邮箱格式;
•用户可以先把手动输入邮箱,也可以长按邮箱文本框跳到联系人那里找到联系人,得到联系人的邮箱,后返回;
•发送邮件。

•邮件发送程序并不复杂,主要是在 EditText 、Button 控件的构建,通过构造一个自定义的 Intent(android.content.Intent.ACTION_SEND)作为传送 Email 的 Activity 之用,在该Intent中,还必须使用 setType()来决定 Email的格式,使用 putExtra() 来置入寄件入(EXTRA_EMAIL)、主题(EXTRA_SUBJECT)、邮件内容(EXTRA_TEXT)以及其他Email的字段(EXTRA_BCC、EXTRA_CC)。代码如下:

      

myButton.setOnClickListener(new OnClickListener() {
            
             @Override
             public void onClick(View v) {
                 // TODO Auto-generated method stub
             
                 Intent mailIntent=new Intent(android.content.Intent.ACTION_SEND);
                
                 mailIntent.setType("plain/test");
                 strEmailReciver=new String[]{ myEditText.getText().toString() };
                
                 strEmailCC=new String[]{myEditText2.getText().toString()};
                
                 strEmailSubject=myEditText3.getText().toString();
                
                 strEmailBody=myEditText4.getText().toString();
                 mailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, strEmailReciver);
                
                 mailIntent.putExtra(android.content.Intent.EXTRA_CC, strEmailCC);
                
                 mailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, strEmailSubject);
                
                 mailIntent.putExtra(android.content.Intent.EXTRA_TEXT, strEmailBody);
                
             startActivity(Intent.createChooser(mailIntent, getResources().getString(R.string.send)));
                
                
             }
         });


在Android中发送Email有许多种写法,本篇例子只是其中之一。下面把其他的方法共享给大家:

• 方法二
Uri uri=Uri.parse("mailto:terryyhl@gmail.com");
            Intent MymailIntent=new Intent(Intent.ACTION_SEND,uri);
            startActivity(MymailIntent);

•方法三
Intent testintent=new Intent(Intent.ACTION_SEND);
            String[] tos={"terryyhl@gmail.com"};
            String[] ccs={"kalaicheng@hotmail.com"};
            testintent.putExtra(Intent.EXTRA_EMAIL, tos);
            testintent.putExtra(Intent.EXTRA_CC, ccs);
            testintent.putExtra(Intent.EXTRA_TEXT, "这是内容");
            testintent.putExtra(Intent.EXTRA_SUBJECT, "这是标题");
            testintent.setType("message/rfc822");
            startActivity(Intent.createChooser(testintent, "发送"));

•方法四,传附件,这里以SD卡的音乐文件为例
Intent testN=new Intent(Intent.ACTION_SEND);
              testN.putExtra(Intent.EXTRA_SUBJECT, "标题");
              testN.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/music.mp3");
              startActivity(Intent.createChooser(testN, "发送"));

     
•使用javamail。这里我就不介绍javamail的实现方法了。

•由于目前模拟器未内置Gmail Client端程序,因此发送Email程序在送出数据后,模拟器上会发出 “No Application can perform this action”,本人没有Android手机,故无法测试,还请有Android手机的园友能够在测试后,将结果反馈给我,谢谢。

作者“软件技术分享”



下面是一个用intent发用邮件的Util类,可以发送附件。

//MailUtil.java
 package com.maclab.util;import java.io.File;
import com.dropbox.client2.session.Session.AccessType;
import Android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.net.Uri;public class MailUtil {
 
 public static void sendMail(String path,Context c)
  {
   File file = new File(path); //附件文件地址  Intent intent = new Intent(Intent.ACTION_SEND);
   intent.putExtra("subject", file.getName()); //
   intent.putExtra("body", "Email from CodePad"); //正文
   intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); //添加附件,附件为file对象
   if (file.getName().endsWith(".gz")) {
    intent.setType("application/x-gzip"); //如果是gz使用gzip的mime
   } else if (file.getName().endsWith(".txt")) {
    intent.setType("text/plain"); //纯文本则用text/plain的mime
   } else {
    intent.setType("application/octet-stream"); //其他的均使用流当做二进制数据来发送
   }
   c.startActivity(intent); //调用系统的mail客户端进行发送}
  } public static void mailContact(Context c,String mailAdress)
  {
   Intent it = new Intent(Intent.ACTION_SEND);  
   String[] receiver;
   receiver=new String[]{mailAdress};
   it.putExtra(Intent.EXTRA_EMAIL, receiver);
   it.putExtra("subject", "About CodePad");
   it.putExtra(Intent.EXTRA_TEXT, "/*Thanks advance for any tips.*/");   it.setType("text/plain");  
   c.startActivity(Intent.createChooser(it, "Choose Email Client")); //调用系统的mail客户端进行发送
  }
  
 }

Linux公社网站(www.linuxidc.com