当 select 通过 Gmail 发送电子邮件时电子邮件正文为空
Email body empty when select to send email by Gmail
我正在使用此代码:
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto",email, null));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, text);
activity.startActivity(Intent.createChooser(emailIntent, "Send feedback to xyz"));
2 年。直到现在一切正常。用户可以 select 向客户端发送消息并发送带有预填充数据的反馈。它适用于所有邮件客户端。
最近注意到,如果我 select gmail 客户端 - 邮件正文保持为空,但在其他邮件客户端上正文填充为文本。
有什么想法吗?
要发送带正文的电子邮件,请使用 message/rfc822。
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("message/rfc822");
sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { "to1@example.com", "to2@example.com" });
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject of the email");
sendIntent.putExtra(Intent.EXTRA_TEXT, "Content of the email");
startActivity(sendIntent);
希望对您有所帮助。
我正在使用以下代码并为每个电子邮件客户端工作。
示例:
Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
intent.setType("plain/text");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"email id of receiver"});
intent.putExtra(Intent.EXTRA_SUBJECT, "This is the subject of the email client");
intent.putExtra(Intent.EXTRA_TEXT, "This is the body of the email client");
// this line is for attaching file
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
startActivity(Intent.createChooser(intent, "Send Email"));
最近我遇到了同样的问题。在搜索时,我发现这是最好的解决方案 (kotlin)(至少对我自己而言):
fun sendEmail(email: String, subject: String, message: String) {
val emailIntent = Intent(Intent.ACTION_SEND)
emailIntent.data = Uri.parse("mailto:")
emailIntent.type = "text/plain"
emailIntent.putExtra(Intent.EXTRA_EMAIL, arrayOf(email))
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject)
emailIntent.putExtra(Intent.EXTRA_TEXT, message)
val sendIntent = Intent.createChooser(emailIntent, "Please Choose Email Client...")
sendIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
try {
context.startActivity(sendIntent)
} catch (e: Exception) {
Toast.makeText(context, e.message, Toast.LENGTH_LONG).show()
}
}
感谢帮助
使用大量建议答案进行测试。
添加 "text/plain" 或 "message/rfc822" 使我的应用停止提供邮件客户端。
找到解决我的问题的答案:
对我来说最有趣的部分是有 2 个意图:
Intent selectorIntent = new Intent(Intent.ACTION_SENDTO);
selectorIntent.setData(Uri.parse("mailto:"));
final Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{email});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, text);
emailIntent.setSelector( selectorIntent );
activity.startActivity(Intent.createChooser(emailIntent, "Send feedback to XYZ"));
这解决了问题。
我对 gmail 使用正文属性,对其他电子邮件使用 EXTRA_TEXT。我已经测试了不同的电子邮件应用程序,例如三星电子邮件、oneplus 电子邮件和 LG 电子邮件,它们似乎支持 EXTRA_TEXT 但 gmail 支持 "body" 属性。
fun composeEmailMessage(context: Context, subject: String, body: String, emails: Array<String> = arrayOf()) {
val intent = Intent(Intent.ACTION_SENDTO)
intent.data = Uri.parse("mailto:")
intent.putExtra(Intent.EXTRA_EMAIL, emails)
intent.putExtra(Intent.EXTRA_SUBJECT, subject)
intent.putExtra(Intent.EXTRA_TEXT, body)//other emails app
intent.putExtra("body", body)//gmail
if (intent.resolveActivity(context.packageManager) != null) {
context.startActivity(Intent.createChooser(intent, "Send email via..."))
}
}
我有类似的问题。这对我有用:而不是
"mailto"
你必须使用
"mailto:"
我也将“Uri.fromParts”替换为“Uri.parse”
我正在使用此代码:
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto",email, null));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, text);
activity.startActivity(Intent.createChooser(emailIntent, "Send feedback to xyz"));
2 年。直到现在一切正常。用户可以 select 向客户端发送消息并发送带有预填充数据的反馈。它适用于所有邮件客户端。 最近注意到,如果我 select gmail 客户端 - 邮件正文保持为空,但在其他邮件客户端上正文填充为文本。
有什么想法吗?
要发送带正文的电子邮件,请使用 message/rfc822。
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("message/rfc822");
sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { "to1@example.com", "to2@example.com" });
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject of the email");
sendIntent.putExtra(Intent.EXTRA_TEXT, "Content of the email");
startActivity(sendIntent);
希望对您有所帮助。
我正在使用以下代码并为每个电子邮件客户端工作。 示例:
Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
intent.setType("plain/text");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"email id of receiver"});
intent.putExtra(Intent.EXTRA_SUBJECT, "This is the subject of the email client");
intent.putExtra(Intent.EXTRA_TEXT, "This is the body of the email client");
// this line is for attaching file
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
startActivity(Intent.createChooser(intent, "Send Email"));
最近我遇到了同样的问题。在搜索时,我发现这是最好的解决方案 (kotlin)(至少对我自己而言):
fun sendEmail(email: String, subject: String, message: String) {
val emailIntent = Intent(Intent.ACTION_SEND)
emailIntent.data = Uri.parse("mailto:")
emailIntent.type = "text/plain"
emailIntent.putExtra(Intent.EXTRA_EMAIL, arrayOf(email))
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject)
emailIntent.putExtra(Intent.EXTRA_TEXT, message)
val sendIntent = Intent.createChooser(emailIntent, "Please Choose Email Client...")
sendIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
try {
context.startActivity(sendIntent)
} catch (e: Exception) {
Toast.makeText(context, e.message, Toast.LENGTH_LONG).show()
}
}
感谢帮助
使用大量建议答案进行测试。 添加 "text/plain" 或 "message/rfc822" 使我的应用停止提供邮件客户端。
找到解决我的问题的答案:
对我来说最有趣的部分是有 2 个意图:
Intent selectorIntent = new Intent(Intent.ACTION_SENDTO);
selectorIntent.setData(Uri.parse("mailto:"));
final Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{email});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, text);
emailIntent.setSelector( selectorIntent );
activity.startActivity(Intent.createChooser(emailIntent, "Send feedback to XYZ"));
这解决了问题。
我对 gmail 使用正文属性,对其他电子邮件使用 EXTRA_TEXT。我已经测试了不同的电子邮件应用程序,例如三星电子邮件、oneplus 电子邮件和 LG 电子邮件,它们似乎支持 EXTRA_TEXT 但 gmail 支持 "body" 属性。
fun composeEmailMessage(context: Context, subject: String, body: String, emails: Array<String> = arrayOf()) {
val intent = Intent(Intent.ACTION_SENDTO)
intent.data = Uri.parse("mailto:")
intent.putExtra(Intent.EXTRA_EMAIL, emails)
intent.putExtra(Intent.EXTRA_SUBJECT, subject)
intent.putExtra(Intent.EXTRA_TEXT, body)//other emails app
intent.putExtra("body", body)//gmail
if (intent.resolveActivity(context.packageManager) != null) {
context.startActivity(Intent.createChooser(intent, "Send email via..."))
}
}
我有类似的问题。这对我有用:而不是
"mailto"
你必须使用
"mailto:"
我也将“Uri.fromParts”替换为“Uri.parse”