Как отправить HTML письмо - PullRequest
35 голосов
/ 05 января 2010

Я нашел способ отправить текстовое электронное письмо с намерением:

final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("text/plain"); 
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new     
String[]{"example@mail.com"}); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject"); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Test");

Но мне нужно отправить текст в формате HTML.
Попытка setType ("text / html") не работает.

Ответы [ 6 ]

48 голосов
/ 30 апреля 2010

Вы можете передать Spanned текст в вашем экстра. Чтобы убедиться, что намерение разрешается только для действий, которые обрабатывают электронную почту (например, приложения Gmail и электронной почты), вы можете использовать ACTION_SENDTO с Uri, начинающимся со схемы mailto. Это также будет работать, если вы заранее не знаете получателя:

final Intent shareIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"));
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "The Subject");
shareIntent.putExtra(
Intent.EXTRA_TEXT,
Html.fromHtml(new StringBuilder()
    .append("<p><b>Some Content</b></p>")
    .append("<small><p>More content</p></small>")
    .toString())
);
3 голосов
/ 09 ноября 2011

Это было очень полезно для HTML, но ACTION_SENDTO не совсем для меня, как есть - я получил сообщение "действие не поддерживается" Я нашел здесь вариант, который делает:

http://www.coderanch.com/t/520651/Android/Mobile/no-application-perform-action-when

А вот мой код, который объединяет два:

String mailId="yourmail@gmail.com";
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, 
                                Uri.fromParts("mailto",mailId, null)); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject text here"); 
// you can use simple text like this
// emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,"Body text here"); 
// or get fancy with HTML like this
emailIntent.putExtra(
         Intent.EXTRA_TEXT,
         Html.fromHtml(new StringBuilder()
             .append("<p><b>Some Content</b></p>")
             .append("<a>http://www.google.com</a>")
             .append("<small><p>More content</p></small>")
             .toString())
         );
startActivity(Intent.createChooser(emailIntent, "Send email..."));
2 голосов
/ 05 января 2010

Я (пока) не начал разработку Android, но документация для цели говорит, что если вы используете EXTRA_TEXT, тип MIME должен быть text / plain.Похоже, что если вы хотите увидеть HTML, вам придется использовать вместо него EXTRA_STREAM ...

1 голос
/ 26 сентября 2018

Некоторое время я пытался отправить html через приложение gmail, поэтому решил оставить некоторое представление о том, что я нашел, на тот случай, если у кого-то еще возникнут подобные проблемы.

Кажется, что независимо от того, что я сделал, я не мог заставить html иметь жирный текст. Затем я попытался переключиться на клиент Outlook, и, к моему удивлению, он работал просто отлично. HTML-разметка также работала на других старых устройствах, но не на моем (galaxy s7 API 26), поэтому я решил, что приложение gmail, похоже, утратило поддержку html-синтаксиса, исходящего из намерений, или, возможно, теперь вам необходимо его предоставить каким-то очень специфическим способом, который не четко задокументирован.

Последняя версия Gmail, которая работала для меня, была версия 6.9.25 ... на эмуляторе Nexus 5X API 25 (Nougat) И перестало работать начиная с версии 7.5.21 ... На эмуляторе API 26 Nexus 5x (Oreo)

0 голосов
/ 21 января 2017

Вы должны изменить «EXTRA_TEXT» на «EXTRA_HTML_TEXT»

https://developer.android.com/reference/android/content/Intent.html#EXTRA_HTML_TEXT

0 голосов
/ 05 января 2010

Как насчет того, чтобы просто добавить html в текстовую область?

emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "<strong>Test</strong>");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...