📜  Android-发送电子邮件

📅  最后修改于: 2021-01-05 05:01:45             🧑  作者: Mango


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

在开始“电子邮件活动”之前,您必须了解具有意图的电子邮件功能,意图是将数据从一个组件携带到应用程序内部或应用程序外部。

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

下一节说明了发送电子邮件所需的Intent对象的不同部分。

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

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

Intent emailIntent = new Intent(Intent.ACTION_SEND);

目的对象-发送电子邮件的数据/类型

要发送电子邮件,您需要使用setData()方法将mailto:指定为URI,并且使用setType()方法将数据类型设置为文本/纯文本,如下所示-

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

目的对象-额外发送电子邮件

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

Sr.No. Extra Data & Description
1

EXTRA_BCC

A String[] holding e-mail addresses that should be blind carbon copied.

2

EXTRA_CC

A String[] holding e-mail addresses that should be carbon copied.

3

EXTRA_EMAIL

A String[] holding e-mail addresses that should be delivered to.

4

EXTRA_HTML_TEXT

A constant String that is associated with the Intent, used with ACTION_SEND to supply an alternative to EXTRA_TEXT as HTML formatted text.

5

EXTRA_SUBJECT

A constant string holding the desired subject line of a message.

6

EXTRA_TEXT

A constant CharSequence that is associated with the Intent, used with ACTION_SEND to supply the literal data to be sent.

7

EXTRA_TITLE

A CharSequence dialog title to provide to the user when used with a ACTION_CHOOSER.

这是一个示例,向您展示如何为意图分配额外的数据-

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

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

电子邮件

电子邮件范例

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

要通过电子邮件尝试此示例,您将需要配备最新Android OS的实际移动设备,否则您可能会遇到无法正常运行的模拟器的困扰。其次,您需要在设备上安装一个电子邮件客户端,例如GMail(默认情况下,每个具有Gmail客户端应用的Android版本)或K9mail。

Step Description
1 You will use Android studio to create an Android application and name it as Tutorialspoint under a package com.example.tutorialspoint.
2 Modify src/MainActivity.java file and add required code to take care of sending email.
3 Modify layout XML file res/layout/activity_main.xml add any GUI component if required. I’m adding a simple button to launch Email Client.
4 Modify res/values/strings.xml to define required constant values
5 Modify AndroidManifest.xml as shown below
6 Run the application to launch Android emulator and verify the result of the changes done in the application.

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

package com.example.tutorialspoint;

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表示关于tutorialspoint徽标


   
   
      
   
      
   
      
   
    

下面将RES /值的内容/字符串.XML定义两个新常量-



   Tutorialspoint
   Compose Email

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



   
   
      
      
         
         
            
            
         
         
      
      
   

让我们尝试运行您的tutorialspoint应用程序。我假设您已将实际的Android Mobile设备与计算机连接。要从Android Studio运行该应用,请打开您项目的活动文件之一,然后点击运行Eclipse运行图标工具栏中的图标。在启动应用程序之前,Android Studio安装程序将显示以下窗口以选择要在其中运行Android应用程序的选项。选择您的移动设备作为选项,然后检查将显示以下屏幕的移动设备-

Android行动装置

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

Android移动Gmail屏幕

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