ACTION_SEND强制发送电子邮件

时间:2012-04-24 08:30:39

标签: android email android-intent

每当我创建一个从我的应用程序发送电子邮件的操作时,它会提示许多选项,包括QR客户端......

有没有办法强制通过电子邮件客户端发送?

发送电子邮件的代码

String rec[] = { owner.email };
i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(android.content.Intent.EXTRA_EMAIL, rec);
i.putExtra(android.content.Intent.EXTRA_SUBJECT, "RE: " + desc);
i.putExtra(android.content.Intent.EXTRA_TEXT,
        "\n\n\nSent from Mojo for Android");
startActivity(i);

我启动此功能时会发生什么的屏幕截图 screenshot

10 个答案:

答案 0 :(得分:26)

尝试设置message/rfc822而不是text/plain

答案 1 :(得分:5)

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("text/html");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
new String[] { "abc@xyz.com" });
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
                    "Subject of the Mail");
emailIntent.putExtra( android.content.Intent.EXTRA_TEXT,
                           "This is my sample Mail");
emailIntent.setType("vnd.android.cursor.dir/email");
startActivity(Intent.createChooser(emailIntent, "Email:"));

否则使用它只显示邮件客户端

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("message/rfc822");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
new String[] { "abc@xyz.com" });
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
                    "Subject of the Mail");
emailIntent.putExtra( android.content.Intent.EXTRA_TEXT,
                           "This is my sample Mail");
//emailIntent.setType("vnd.android.cursor.dir/email");
startActivity(Intent.createChooser(emailIntent, "Email:"));

答案 2 :(得分:4)

我认为您应该将setType更改为

i.setType("message/rfc822") ;

答案 3 :(得分:3)

尽管@thepoosh为时已晚,但对将来的提问者可能会有帮助。经过大量的搜索和测试,我终于找到了一个很好的解决方案。 感谢开源开发者cketti分享了他/她的简洁解决方案。

String mailto = "mailto:bob@example.org" +
    "?cc=" + "alice@example.com" +
    "&subject=" + Uri.encode(subject) +
    "&body=" + Uri.encode(bodyText);

Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
emailIntent.setData(Uri.parse(mailto));

try {
  startActivity(emailIntent);
} catch (ActivityNotFoundException e) {
  //TODO: Handle case where no email app is available
}

This是其要旨的链接。

答案 4 :(得分:1)

它将显示安装在android手机上的所有可用应用,这些应用可以执行共享或将webview的链接发送给其他人。喜欢-Gmail,facebook,imo,imo,WhatsApp,Messenger等。

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
String shareLink = webView.getUrl();
intent.putExtra(Intent.EXTRA_TEXT, shareLink);
startActivity(Intent.createChooser(intent, "Share via..."));

答案 5 :(得分:0)

只要您使用ACTION_SEND类型为text/plain,它就会显示所有有效选项。但是,如果您愿意,可以通过编程方式进行过滤,设计自己的对话窗口,该窗口仅显示Gmail或其他邮件客户端。

顺便说一句,为什么在你只想使用Gmail时甚至需要这个窗口?

答案 6 :(得分:0)

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("mailto:?to=email&subject=hello&body=hello%20world"));
startActivity(Intent.createChooser(intent, "Send via..."));

你可以尝试这个:::::

答案 7 :(得分:0)

Intent.setType("plain/text");

首先,当我发现这一点时,我立刻发现它是一个错误而且它应该是text/plain,但这实际上是仅在应用程序列表中显示电子邮件客户端的正确方法。

试一试,亲眼看看。

答案 8 :(得分:0)

intent.setPackage("com.google.android.gm"); //添加Gmail包强制打开Gmail App

答案 9 :(得分:-1)

String rec[] = { owner.email };
i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822") ;
i.putExtra(android.content.Intent.EXTRA_EMAIL, rec);
i.putExtra(android.content.Intent.EXTRA_SUBJECT, "RE: " + desc);
i.putExtra(android.content.Intent.EXTRA_TEXT,
        "\n\n\nSent from Mojo for Android");
startActivity(i);

试试这个; :::