Тело электронной почты пусто при выборе отправки электронной почты через Gmail - PullRequest
3 голосов
/ 21 января 2020

Я использую этот код:

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 лет. И до сих пор все работало нормально. Пользователь может выбрать клиент сообщения и отправить отзыв с предварительно заполненными данными внутри. Это работало нормально для всех почтовых клиентов. Недавно заметил, что если я выберу клиент gmail - тело сообщения остается пустым, но на других почтовых клиентах тело заполняется текстом.

Есть идеи?

Ответы [ 4 ]

5 голосов
/ 21 января 2020

Спасибо за помощь

Проведены тесты с множеством предложенных ответов. добавление «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"));

Это решенная проблема.

1 голос
/ 21 января 2020

Недавно я столкнулся с той же проблемой. При поиске я нашел это как лучшее решение (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()
    }
}
0 голосов
/ 21 января 2020

Я использую следующий код и работаю для каждого почтового клиента. Пример:

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"));
0 голосов
/ 21 января 2020

Чтобы отправить электронное письмо с телом, используйте 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);

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...