在Android Studio中,我希望通过点击按钮发送电子邮件。我正在使用以下代码,直到我开始改变之前弄清楚发生了什么。
String[] TO = {"ABC@yahoo.com.au"};
String[] CC = {"xyz@gmail.com"};
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, "Email subject");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Some message added in here");
try {
startActivity(Intent.createChooser(emailIntent, "Send mail..."));
finish();
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(MainActivity.this,
"There is no email client installed.", Toast.LENGTH_SHORT).show();
}
这很好用,并且在我的手机上显示电子邮件内容符合预期,但电子邮件内容“此处添加的某些邮件”行显然是硬编码的。我显然希望通过以下方式添加我自己的内容
String content = "Information I want to send";
emailIntent.putExtra(Intent.EXTRA_TEXT, content);
但由于某种原因,电子邮件内容为空白。为什么识别字符串“content”但字符串变量x不是?
答案 0 :(得分:2)
检查此示例 通过查看您的代码我只发现设置中的问题
emailIntent.setType(文本/无格式)。
可能您正在使用Gmail发送邮件(所以您必须检查第二个示例)。
发送电子邮件(发送至手机电子邮件客户端)
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, ""));
发送电子邮件(至Gmail)
Gmail不会检查额外的Intent字段,因此为了使用此意图,您需要使用Intent.ACTION_SENDTO并传递mailto:URI,其主题和正文URL已编码。
String uriText =
"mailto:youremail@gmail.com" +
"?subject=" + Uri.encode("some subject text here") +
"&body=" + Uri.encode("some text here");
Uri uri = Uri.parse(uriText);
Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
sendIntent.setData(uri);
startActivity(Intent.createChooser(sendIntent, "Send email"));