Android - 概述

Android - 发送电子邮件

电子邮件是通过电子方式从一个系统用户通过网络分发给一个或多个收件人的消息.

开始之前电子邮件活动,您必须知道有意图的电子邮件功能,Intent将数据从一个组件传送到应用程序内或应用程序外的另一个组件.

要从您的应用程序发送电子邮件,您不必从一开始就实施电子邮件客户端,但您可以使用现有的电子邮件客户端,例如Android,Gmail,Outlook,K-9 Mail等提供的默认电子邮件应用.为此,我们需要编写一个活动启动电子邮件客户端,使用具有正确操作和数据的隐式Intent.在此示例中,我们将使用启动现有电子邮件客户端的Intent对象从我们的应用程序发送电子邮件.

以下部分介绍了发送电子邮件所需的Intent对象的不同部分.

意图对象 - 发送电子邮件的行动

您将使用 ACTION_SEND 操作启动安装在您的电子邮件客户端上Android设备.以下是使用ACTION_SEND操作创建意图的简单语法.

Intent emailIntent = new Intent(Intent.ACTION_SEND);


意图对象 - 要发送电子邮件的数据/类型

要发送电子邮件,您需要指定 mailto :作为使用setData()方法的URI和数据类型将使用setType()方法 text/plain ,如下所示 :

emailIntent.setData(Uri.parse("mailto:"));
emailIntent.setType("text/plain");


意图对象 - 额外发送电子邮件

Android内置支持添加TO,SUBJECT,CC, TEXT等字段,可以在将意图发送到目标电子邮件客户端之前附加到意图.您可以在电子邮件中使用以下额外字段并减去;

Sr.No.额外数据&描述
1

EXTRA_BCC

一个String [],其中包含应该被盲目复制的电子邮件地址.

2

EXTRA_CC

A String []持有应该被复制的电子邮件地址.

3

EXTRA_EMAIL

一个字符串[],包含应发送到的电子邮件地址.

4

EXTRA_HTML_TEXT

与Intent关联的常量String,与ACTION_SEND一起使用,以EXTRA_TEXT的替代方式提供HTML格式的文本.

5

EXTRA_SUBJECT

一个包含所需邮件主题行的常量字符串.

6

EXTRA_TEXT

与Intent关联的常量CharSequence,与ACTION_SEND一起使用以提供要发送的文字数据.

7

EXTRA_TITLE

CharSequence对话框与ACTION_CHOOSER一起使用时提供给用户的标题.

这是一个示例显示如何为意图分配额外数据 :

emailIntent.putExtra(Intent.EXTRA_EMAIL  , new String[]{"Recipient"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "subject");
emailIntent.putExtra(Intent.EXTRA_TEXT   , "Message Body");


以上代码的输出如下图所示

电子邮件

电子邮件示例

示例

下面的示例向您展示如何使用Intent对象启动电子邮件客户端以向给定的收件人发送电子邮件.

要通过此示例进行电子邮件实验,您将需要配备实际的移动设备最新的Android操作系统,否则你可能会遇到可能无法正常工作的模拟器.其次,您需要拥有一个电子邮件客户端,如GMail(默认情况下,每个Android版本都有Gmail客户端应用程序)或K9mail安装在您的设备上.
Step描述
1您将使用Android工作室创建一个Android应用程序,并在包 com.example下将其命名为 Tutorialspoint . it1352.
2修改 src/MainActivity.java 文件并添加所需的代码以处理发送电子邮件.
3修改布局XML文件 res/layout/activity_main.xml 如果需要,添加任何GUI组件.我正在添加一个简单的按钮来启动电子邮件客户端.
4修改 res/values/strings.xml 以定义所需的常量值
5修改 AndroidManifest.xml ,如下所示
6运行应用程序以启动Android模拟器并验证应用程序中所做更改的结果.

以下是修改后的主要活动文件的内容 src/com.example.Tutorialspoint/MainActivity.java .

package com.example.it1352;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      Button startBtn = (Button) findViewById(R.id.sendEmail);
      startBtn.setOnClickListener(new View.OnClickListener() {
         public void onClick(View view) {
            sendEmail();
         }
      });
   }
	
   protected void sendEmail() {
      Log.i("Send email", "");
      String[] TO = {""};
      String[] CC = {""};
      Intent emailIntent = new Intent(Intent.ACTION_SEND);
      
      emailIntent.setData(Uri.parse("mailto:"));
      emailIntent.setType("text/plain");
      emailIntent.putExtra(Intent.EXTRA_EMAIL, TO);
      emailIntent.putExtra(Intent.EXTRA_CC, CC);
      emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Your subject");
      emailIntent.putExtra(Intent.EXTRA_TEXT, "Email message goes here");
      
      try {
         startActivity(Intent.createChooser(emailIntent, "Send mail..."));
         finish();
         Log.i("Finished sending email...", "");
      } catch (android.content.ActivityNotFoundException ex) {
         Toast.makeText(MainActivity.this, "There is no email client installed.", Toast.LENGTH_SHORT).show();
      }
   }
}


以下是 res/layout/activity_main.xml

这里abc表示关于it1352 logo
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" >
   
   <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Sending Mail Example"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:textSize="30dp" />
      
   <TextView
      android:id="@+id/textView2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point "
      android:textColor="#ff87ff09"
      android:textSize="30dp"
      android:layout_above="@+id/imageButton"
      android:layout_alignRight="@+id/imageButton"
      android:layout_alignEnd="@+id/imageButton" />
      
   <ImageButton
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageButton"
      android:src="@drawable/abc"
      android:layout_centerVertical="true"
      android:layout_centerHorizontal="true" />
      
   <Button 
      android:id="@+id/sendEmail"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/compose_email"/>
    
</LinearLayout>


以下将是 res/values/strings.xml 的内容来定义两个新的常量 :

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">Tutorialspoint</string>
   <string name="compose_email">Compose Email</string>
</resources>


以下是 AndroidManifest.xml的默认内容 :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.Tutorialspoint" >
   
   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.it1352.MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>


让我们试着运行你的 it1352应用程序.我假设您已将实际的Android移动设备与计算机相关联.要从Android Studio运行应用程序,请打开项目的一个活动文件,然后单击运行Eclipse Run Icon icon从工具栏中.在开始申请之前,Android studio安装程序将显示以下窗口,以选择您要运行Android应用程序的选项.选择您的移动设备作为选项,然后检查您的移动设备,该设备将显示以下屏幕 :

Android移动设备

现在使用撰写电子邮件按钮列出关闭所有已安装的邮件客户端.从列表中,您可以选择一个电子邮件客户端来发送您的电子邮件.我将使用Gmail客户端发送我的电子邮件,其中包含所有提供的默认字段,如下所示.这里发件人:将是您为Android设备注册的默认电子邮件ID.

Android移动Gmail屏幕

您可以修改任一给定的默认字段,最后使用发送电子邮件按钮将电子邮件发送给上述收件人.