Android发送电子邮件


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

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

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

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

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

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

Intent emailIntent = new Intent(Intent.ACTION_SEND);

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

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

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

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

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

序号 额外数据和描述
1

EXTRA_BCC

String []持有应该被盲目复制的电子邮件地址。

2

EXTRA_CC

String []持有应复制碳的电子邮件地址。

3

EXTRA_EMAIL

String []包含应传递给的电子邮件地址。

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 Description
1 您将使用Android studio创建一个Android应用程序,并com.example.codingdict包下将其命名为codingdict
2 修改src / MainActivity.java文件并添加所需的代码以处理发送电子邮件。
3 修改布局XML文件res / layout / activity_main.xml根据需要添加任何GUI组件。我正在添加一个简单的按钮来启动Email Client。
4 修改res / values / strings.xml以定义所需的常量值
5 修改AndroidManifest.xml,如下所示
6 运行应用程序以启动Android模拟器并验证应用程序中所做更改的结果。

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

package com.example.codingdict;

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表示codingdict徽标

<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">codingdict</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.codingdict" >

   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >

      <activity
         android:name="com.example.codingdict.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>

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

Android移动设备

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

Android移动Gmail屏幕

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