发送电子邮件意图


588
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/html");
intent.putExtra(Intent.EXTRA_EMAIL, "emailaddress@emailaddress.com");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "I'm email body.");

startActivity(Intent.createChooser(intent, "Send Email"));

上面的代码将打开一个对话框,显示以下应用程序:-蓝牙,Google文档,Yahoo Mail,Gmail,Orkut,Skype等。

实际上,我想过滤这些列表选项。我只想显示与电子邮件相关的应用程序,例如Gmail,Yahoo Mail。怎么做?

我已经在“ Android Market”应用程序上看到过这样的示例。

  1. 开启Android Market应用程式
  2. 打开开发人员指定其电子邮件地址的任何应用程序。(如果找不到此类应用,请打开我的应用:-market:// details?id = com.becomputer06.vehicle.diary.free,或通过“ Vehicle Diary”搜索)
  3. 向下滚动到“ DEVELOPER”
  4. 点击“发送电子邮件”

该对话框仅显示电子邮件应用程序,例如Gmail,Yahoo Mail等。它不显示蓝牙,Orkut等。什么代码生成此类对话框?


4
抱歉,无法使用Intent.ACTION_SEND。也许它可以直接用于gmail-App,但我不知道这是否可行。
2012年

19
万一有人偶然在这里学习有关电子邮件的意图,EXTRA_MAIL应该对应一个String[],而不仅仅是String此处所示的a 。
bigstones,2012年



看到这里的一些好的建议:medium.com/@cketti/...
费利克斯D.

Answers:


218

当您像下面那样更改intent.setType时,您将获得

intent.setType("text/plain");

用于android.content.Intent.ACTION_SENDTO仅获取电子邮件客户端列表,而没有facebook或其他应用程序。只是电子邮件客户端。例如:

new Intent(Intent.ACTION_SENDTO);

我不建议您直接使用电子邮件应用程序。让用户选择他喜欢的电子邮件应用程序。不要约束他。

如果您使用ACTION_SENDTO,则putExtra无法将意图和文本添加到意图中。使用Uri添加主题和正文。

编辑: 我们可以使用message/rfc822而不是"text/plain"作为MIME类型。但是,这并不表示“仅提供电子邮件客户端”,而是表示“提供任何支持message / rfc822数据的内容”。这可能很容易包含某些不是电子邮件客户端的应用程序。

message/rfc822 支持的MIME类型 .mhtml, .mht, .mime


7
您能否提供一些代码以产生所需的输出?
迪拉2012年


76
这样做的目的选择器说no apps installed to perform this intent,当我使用ACTION_SENDTO。我正在使用Android 4.1.2,并且安装了电子邮件应用程序...
ffleandro

4
Magnus的答案是“正确”的方法。我建议原始海报更改接受的答案。
jhabbott

8
使用MIME类型执行发送操作是一个坏主意,因为您基本上是在指示Android提供支持发送类型文件的应用列表message/rfc822。这是一样发送电子邮件。请改用该mailto:协议,因为这是电子邮件客户端真正理解的。
Paul Lammertsma

871

接受的答案不适用于4.1.2。这应该适用于所有平台:

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
            "mailto","abc@gmail.com", null));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Body");
startActivity(Intent.createChooser(emailIntent, "Send email..."));

希望这可以帮助。

更新:根据marcwjj,似乎在4.3上,我们需要传递字符串数组而不是字符串作为电子邮件地址,以使其正常工作。我们可能需要再增加一行:

intent.putExtra(Intent.EXTRA_EMAIL, addresses); // String[] addresses

参考链接


7
您是对的,它在4.2上都不是。因此,这实际上是唯一正确的答案,谢谢!
2013年

12
太棒了。以下有人提到,指定“ mailto”部分是缩小电子邮件客户端可用选项的范围。使用Uri.fromParts(“ mailto”,“”,null)会将光标放在收件人字段中,非常适合我的需要。
毛茸茸的

24
试试这个emailIntent.putExtra(Intent.EXTRA_TEXT,“我是电子邮件正文。”);
thanhbinh84'9

15
如果您没有特定的收件人,这也可以:Uri.fromParts("mailto", "", null)
Phil

25
这在我的Android 4.3上不再起作用。:请发送电子邮件的意图,它完美地工作检查出的官方Android DOC developer.android.com/guide/components/...
marcwjj

244

主要有三种方法:

String email = /* Your email address here */
String subject = /* Your subject here */
String body = /* Your body here */
String chooserTitle = /* Your chooser title here */

1.自定义Uri

Uri uri = Uri.parse("mailto:" + email)
    .buildUpon()
    .appendQueryParameter("subject", subject)
    .appendQueryParameter("body", body)
    .build();

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(Intent.createChooser(emailIntent, chooserTitle));

2.使用Intent附加功能:

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:" + email));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, body);
//emailIntent.putExtra(Intent.EXTRA_HTML_TEXT, body); //If you are using HTML in your body text

startActivity(Intent.createChooser(emailIntent, "Chooser Title"));

3.支持库ShareCompat

Activity activity = /* Your activity here */

ShareCompat.IntentBuilder.from(activity)
    .setType("message/rfc822")
    .addEmailTo(email)
    .setSubject(subject)
    .setText(body)
    //.setHtmlText(body) //If you are using HTML in your body text
    .setChooserTitle(chooserTitle)
    .startChooser();

1
这对我而言效果更好-其他选项弹出了一些直接的内容(例如,Skype)作为可能的处理程序。
克里斯·雷

1
如果%缓冲区中有符号,则生成的电子邮件中的某些字符将无法正确编码。您需要执行Uri.encode@minipif建议的舞蹈。
Giulio Piancastelli

12
这是最好的答案,不要浪费时间尝试别人,第二个是我选择的,它工作完美,仅显示纯电子邮件应用程序,而不是gDrive,不是蓝牙。..等等。感谢@ becomputer06
Hugo

1
注意“&”字符。如果您在电子邮件正文中有&字符,则这些方法将在&之后切断正文。例如,如果您发送诸如“我是&样本身体”之类的正文,您将只会得到“我是”
EmreKoç2015年

4
ShareCompat生成几乎所有应用程序,而不仅仅是电子邮件客户端!
rpattabi

111

引用自Android官方文档,我已经在Android 4.4上对其进行了测试,并且可以完美运行。在https://developer.android.com/guide/components/intents-common.html#Email中查看更多示例

public void composeEmail(String[] addresses, String subject) {
    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:")); // only email apps should handle this
    intent.putExtra(Intent.EXTRA_EMAIL, addresses);
    intent.putExtra(Intent.EXTRA_SUBJECT, subject);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

6
同意!我很惊讶这样的答案远远没有列出来。我想这肯定是Android文档中相对较新的更改。
Mikey

大!可靠,它指的是Android应用程序开发人员的“圣经”。
dev_android

1
mailto之后的冒号帮了我大忙!我使用的是“ mailto”而不是“ mailto:”
Nigel Crasto

1
在5.1.1。上工作。其他选项对我不起作用。
胡安

1
EXTRA_EMAIL不为我工作,所以我使用了Uri.parse("mailto: " + myEmail)
Pratik Butani,

89

答案很晚,尽管我想出了一个可以帮助他人的解决方案:

Java版本

Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
emailIntent.setData(Uri.parse("mailto:abc@xyz.com"));
startActivity(Intent.createChooser(emailIntent, "Send feedback"));


Kotlin版本

val emailIntent = Intent(Intent.ACTION_SENDTO).apply { 
    data = Uri.parse("mailto:abc@xyz.com")
}
startActivity(Intent.createChooser(emailIntent, "Send feedback"))


这是我的输出(仅建议使用Gmail +收件箱):

我的输出

我从Android Developers网站获得了此解决方案。


2
对我来说,mailto电子邮件之间必须没有空格,这一点很重要:mailto:abc@xyz.com
AlvaroSantisteban,2018年

这是正确的答案。
nibbana

36

这对我有用:

Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));
intent.putExtra(Intent.EXTRA_EMAIL  , new String[] { "me@somewhere.com" });
intent.putExtra(Intent.EXTRA_SUBJECT, "My subject");

startActivity(Intent.createChooser(intent, "Email via..."));

即使用ACTION_SENDTO动作而不是ACTION_SEND动作。我已经在几个Android 4.4设备上进行了尝试,并且将选择器弹出窗口限制为仅显示电子邮件应用程序(Email,Gmail,Yahoo Mail等),并且可以将电子邮件地址和主题正确地插入到电子邮件中。


35

尝试:

intent.setType("message/rfc822");

他是对的,我尝试过并提供[驱动器,电子邮件,Gmail,Skype],这应该是“正确的答案”
gurbieta 2012年

18
使用MIME类型执行发送操作是一个坏主意,因为您基本上是在指示Android提供支持发送类型文件的应用列表message/rfc822。这是一样发送电子邮件。请改用该mailto:协议,因为这是电子邮件客户端真正理解的。
Paul Lammertsma

34

根据Android开发人员官方文档,这是发送电子邮件意图的正确方法

将以下代码行添加到您的应用中:

Intent intent = new Intent(Intent.ACTION_SEND);//common intent 
intent.setData(Uri.parse("mailto:")); // only email apps should handle this

可选:像这样添加正文和主题

intent.putExtra(Intent.EXTRA_SUBJECT, "Your Subject Here");
intent.putExtra(Intent.EXTRA_TEXT, "E-mail body" );

您已经添加了此行,但是对于新用户来说不错

intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"youremailaddress@aviparshan.com"});

这将是收件人的地址,这意味着用户将向您(开发人员)发送电子邮件。


@ barnacle.m谢谢!它也是更简单的方法之一。问题是我的答案没有得到足够的支持:(
Avi Parshan

1
这是因为有很多类似的答案,但这是指出有关此问题的官方Android文档。
barnacle.m,

1
我无法发送电子邮件地址。我像这样修改它intent.data = Uri.parse(“ mailto:somemail@xyz.com”)
Hitesh Bisht

18

最后想出最好的方法

String to = "test@gmail.com";
String subject= "Hi I am subject";
String body="Hi I am test body";
String mailTo = "mailto:" + to +
        "?&subject=" + Uri.encode(subject) +
        "&body=" + Uri.encode(body);
Intent emailIntent = new Intent(Intent.ACTION_VIEW);
emailIntent.setData(Uri.parse(mailTo));
startActivity(emailIntent);

你真棒,老兄
Ashik'9

没问题的家伙
Ajay Shrestha

2
完美的作品。
Solanki Kamlesh

看看这篇文章,它描述得很详细:medium.com/@cketti/...
布鲁诺BIERI

运作良好,请继续使用
-Jacks

15

如果只需要电子邮件客户端,则应android.content.Intent.EXTRA_EMAIL与数组一起使用。举个例子:

final Intent result = new Intent(android.content.Intent.ACTION_SEND);
result.setType("plain/text");
result.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { recipient });
result.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
result.putExtra(android.content.Intent.EXTRA_TEXT, body);

3
不,还是带来了很多其他的应用程序-很多比ACTION_SENDTO
大道

10

以下代码对我来说很好。

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("message/rfc822");
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"abc@gmailcom"});
Intent mailer = Intent.createChooser(intent, null);
startActivity(mailer);

8

来自Android开发者文档

public void composeEmail(String[] addresses, String subject) {
    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:")); // only email apps should handle this
    intent.putExtra(Intent.EXTRA_EMAIL, addresses);
    intent.putExtra(Intent.EXTRA_SUBJECT, subject);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

8

编辑:不再使用新版本的Gmail

这是当时我发现它可以与任何字符一起使用的唯一方法。

doreamon的答案是正确的做法,因为它适用于新版Gmail中的所有字符。

旧答案:


这是我的。它似乎可以在所有Android版本上使用,并支持主题和消息正文,并支持完整的utf-8字符:

public static void email(Context context, String to, String subject, String body) {
    StringBuilder builder = new StringBuilder("mailto:" + Uri.encode(to));
    if (subject != null) {
        builder.append("?subject=" + Uri.encode(Uri.encode(subject)));
        if (body != null) {
            builder.append("&body=" + Uri.encode(Uri.encode(body)));
        }
    }
    String uri = builder.toString();
    Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse(uri));
    context.startActivity(intent);
}

1
+1 Uri.encode是正确的方法。但是为什么要为主题和身体两次调用它呢?
Giulio Piancastelli

因此,自己进行编码只是一个坏主意。最好使用适当的Intent和必要的附加功能,请参见例如stackoverflow.com/a/15022222
Giulio Piancastelli,2013年

对我来说,这是最好的答案,因为其他解决方案仅适用于某些电子邮件应用程序。这个适用于我测试过的每个电子邮件应用程序。
Egis

7

这些解决方案都不适合我。这是适用于棒棒糖的最小解决方案。在我的设备上,结果选择器列表中仅显示Gmail和本机电子邮件应用程序。

Intent emailIntent = new Intent(Intent.ACTION_SENDTO,
                                Uri.parse("mailto:" + Uri.encode(address)));

emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, body);
startActivity(Intent.createChooser(emailIntent, "Send email via..."));

7

适用于所有android版本:

String[] TO = {"email@server.com"};
    Uri uri = Uri.parse("mailto:email@server.com")
            .buildUpon()
            .appendQueryParameter("subject", "subject")
            .appendQueryParameter("body", "body")
            .build();
    Intent emailIntent = new Intent(Intent.ACTION_SENDTO, uri);
    emailIntent.putExtra(Intent.EXTRA_EMAIL, TO);
    startActivity(Intent.createChooser(emailIntent, "Send mail..."));

你的回答帮助了我。谢谢
阿德南·汗

5

以下代码为我工作!

import android.support.v4.app.ShareCompat;
    .
    .
    .
    .
final Intent intent = ShareCompat.IntentBuilder
                        .from(activity)
                        .setType("application/txt")
                        .setSubject(subject)
                        .setText("Hii")
                        .setChooserTitle("Select One")
                        .createChooserIntent()
                        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET)
                        .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

activity.startActivity(intent);

5

这对我来说很好用:

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(Uri.parse("mailto:" + address));
    startActivity(Intent.createChooser(intent, "E-mail"));

5

如果要确保仅通过电子邮件应用程序(而不是其他文本消息或社交应用程序)来处理您的意图,请使用该ACTION_SENDTO操作并包括“ mailto:”数据方案。例如:

public void composeEmail(String[] addresses, String subject) {
    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:")); // only email apps should handle this
    intent.putExtra(Intent.EXTRA_EMAIL, addresses);
    intent.putExtra(Intent.EXTRA_SUBJECT, subject);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

我在https://developer.android.com/guide/components/intents-common.html#Email中找到了


5

如果有人在科特林

val emailArrray:Array<String> = arrayOf("travelagentsupport@kkk.com")
val intent = Intent(Intent.ACTION_SENDTO)
intent.data = Uri.parse("mailto:") // only email apps should handle this
intent.putExtra(Intent.EXTRA_EMAIL, emailArrray)
intent.putExtra(Intent.EXTRA_SUBJECT, "Inquire about travel agent")
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
}

4

其中大多数答案仅在不发送附件的情况下才适用。就我而言,有时我需要发送附件(ACTION_SEND)或两个附件(ACTION_SEND_MULTIPLE)。

因此,我从该线程中采用了最佳方法,并将它们组合在一起。它使用的是支持库,ShareCompat.IntentBuilder但我只显示与ACTION_SENDTO和“ mailto:” uri匹配的应用。这样,我仅获得具有附件支持的电子邮件应用程序列表:

fun Activity.sendEmail(recipients: List<String>, subject: String, file: Uri, text: String? = null, secondFile: Uri? = null) {
    val originalIntent = createEmailShareIntent(recipients, subject, file, text, secondFile)
    val emailFilterIntent = Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"))
    val originalIntentResults = packageManager.queryIntentActivities(originalIntent, 0)
    val emailFilterIntentResults = packageManager.queryIntentActivities(emailFilterIntent, 0)
    val targetedIntents = originalIntentResults
            .filter { originalResult -> emailFilterIntentResults.any { originalResult.activityInfo.packageName == it.activityInfo.packageName } }
            .map {
                createEmailShareIntent(recipients, subject, file, text, secondFile).apply { `package` = it.activityInfo.packageName }
            }
            .toMutableList()
    val finalIntent = Intent.createChooser(targetedIntents.removeAt(0), R.string.choose_email_app.toText())
    finalIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedIntents.toTypedArray())
    startActivity(finalIntent)
}

private fun Activity.createEmailShareIntent(recipients: List<String>, subject: String, file: Uri, text: String? = null, secondFile: Uri? = null): Intent {
    val builder = ShareCompat.IntentBuilder.from(this)
            .setType("message/rfc822")
            .setEmailTo(recipients.toTypedArray())
            .setStream(file)
            .setSubject(subject)
    if (secondFile != null) {
        builder.addStream(secondFile)
    }
    if (text != null) {
        builder.setText(text)
    }
    return builder.intent
}

看起来可能很有用;有机会在Java中获得它吗?
凯尔·洪菲尔德

1
Kotlin与Java非常相似,您应该能够复制粘贴并只需进行一些更改。
大卫·瓦夫拉(DavidVávra)'18

3

使用intent.setType("message/rfc822");确实可以,但是它显示了额外的应用程序,这些应用程序不一定处理电子邮件(例如GDrive)。最佳Intent.ACTION_SENDTO搭配使用,setType("text/plain")但您必须添加setData(Uri.parse("mailto:"))才能获得最佳效果(仅电子邮件应用程序)。完整的代码如下:

Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setType("text/plain");
intent.setData(Uri.parse("mailto:IT@RMAsoft.NET"));
intent.putExtra(Intent.EXTRA_SUBJECT, "Email from My app");
intent.putExtra(Intent.EXTRA_TEXT, "Place your email message here ...");
startActivity(Intent.createChooser(intent, "Send Email"));

完美的
灵魂

2

如果要定位Gmail,则可以执行以下操作。请注意,意图是“ ACTION_SENDTO”而不是“ ACTION_SEND”,Gmail不需要额外的意图字段。

String uriText =
    "mailto:youremail@gmail.com" + 
    "?subject=" + Uri.encode("your subject line here") + 
    "&body=" + Uri.encode("message body here");

Uri uri = Uri.parse(uriText);

Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
sendIntent.setData(uri);
if (sendIntent.resolveActivity(getPackageManager()) != null) {
   startActivity(Intent.createChooser(sendIntent, "Send message")); 
}

2

我正在用Kotlin更新Adil的答案,

val intent = Intent(Intent.ACTION_SENDTO)
intent.data = Uri.parse("mailto:") // only email apps should handle this
intent.putExtra(Intent.EXTRA_EMAIL, Array(1) { "test@email.com" })
intent.putExtra(Intent.EXTRA_SUBJECT, "subject")
if (intent.resolveActivity(packageManager) != null) {
    startActivity(intent)
} else {
    showSnackBar(getString(R.string.no_apps_found_to_send_mail), this)
}

即使Gmail在应用程序上,此操作也会失败。
AndroidDev

@AndroidDev您在哪个设备上遇到了问题?
Kishan Solanki

2

请使用以下代码:

                try {

                    String uriText =
                            "mailto:emailid" +
                                    "?subject=" + Uri.encode("Feedback for app") +
                                    "&body=" + Uri.encode(deviceInfo);
                    Uri uri = Uri.parse(uriText);
                    Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
                    emailIntent.setData(uri);
                    startActivity(Intent.createChooser(emailIntent, "Send email using..."));
                } catch (android.content.ActivityNotFoundException ex) {
                    Toast.makeText(ContactUsActivity.this, "No email clients installed.", Toast.LENGTH_SHORT).show();
                }

1

也许您应该尝试这样: intent.setType("plain/text");

我在这里找到的。我在应用程序中使用了它,它仅显示“电子邮件”和“ Gmail”选项。


2
“纯文本/文本”显示蓝牙,Skype等。在Android Market应用程序中签出所需的输出。问题中列出了步骤。
迪拉2012年

1
使用MIME类型执行发送操作是一个坏主意,因为您基本上是在指示Android提供一系列支持发送类型为plain/text,甚至不是有效MIME类型的文件的应用程序。这是一样发送电子邮件。请改用该mailto:协议,因为这是电子邮件客户端真正理解的。
Paul Lammertsma

1

在电话电子邮件客户端中编写电子邮件:

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("plain/text");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] { "some@email.address" });
intent.putExtra(Intent.EXTRA_SUBJECT, "subject");
intent.putExtra(Intent.EXTRA_TEXT, "mail body");
startActivity(Intent.createChooser(intent, ""));

1

用这个:

boolean success = EmailIntentBuilder.from(activity)
        .to("support@example.org")
        .cc("developer@example.org")
        .subject("Error report")
        .body(buildErrorReport())
        .start();

使用build gradle:

compile 'de.cketti.mailto:email-intent-builder:1.0.0'

1

这是我使用的,对我有用:

//variables
String subject = "Whatever subject you want";
String body = "Whatever text you want to put in the body";
String intentType = "text/html";
String mailToParse = "mailto:";

//start Intent
Intent variableName = new Intent(Intent.ACTION_SENDTO);
variableName.setType(intentType);
variableName.setData(Uri.parse(mailToParse));
variableName.putExtra(Intent.EXTRA_SUBJECT, subject);
variableName.putExtra(Intent.EXTRA_TEXT, body);

startActivity(variableName);

这也将使用户选择他们喜欢的电子邮件应用程序。这唯一不允许您做的就是设置收件人的电子邮件地址。


"在第二行缺少。
蒂姆(Tim)

1

该代码正在我的设备中运行

Intent mIntent = new Intent(Intent.ACTION_SENDTO);
mIntent.setData(Uri.parse("mailto:"));
mIntent.putExtra(Intent.EXTRA_EMAIL  , new String[] {"mahendrarajdhami@gmail.com"});
mIntent.putExtra(Intent.EXTRA_SUBJECT, "");
startActivity(Intent.createChooser(mIntent, "Send Email Using..."));

只会在我的设备中打开Gmail和电子邮件
Mahen

1
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", email, null));
if (emailIntent.resolveActivity(context.getPackageManager()) != null) {
    context.startActivity(Intent.createChooser(emailIntent, "Send Email..."));
} else {
    Toast.makeText(context, "No apps can perform this action.", Toast.LENGTH_SHORT).show();
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.