如何发送HTML电子邮件

时间:2010-01-05 16:44:16

标签: android email android-intent html-email

我找到了一种使用意图发送纯文本电子邮件的方法:

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 个答案:

答案 0 :(得分:48)

您可以在额外内容中传递Spanned文字。要确保意图仅针对处理电子邮件的活动(例如Gmail和电子邮件应用),您可以使用ACTION_SENDTO以及以mailto方案开头的Uri。如果您事先不知道收件人,这也会有效:

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())
);

答案 1 :(得分:3)

这对我来说非常有用,但是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 :(得分:2)

我尚未启动Android开发,但意图的documentation表示如果使用EXTRA_TEXT,则MIME类型应为text / plain。看起来如果你想看HTML,你必须使用EXTRA_STREAM ......

答案 3 :(得分:1)

曾经尝试过一段时间通过gmail应用发送html,因此决定对我的发现有所了解,以防万一其他人遇到类似问题。

似乎无论我做了什么,我都无法获得包含粗体文本的html。 然后,我尝试切换到Outlook客户程序,但令我惊讶的是,它工作得很好。 HTML标记也可以在其他较旧的设备上运行,但不能在我的设备上运行(galaxy s7 API 26),因此我认为gmail应用似乎已放弃了对来自意图的html语法的支持,或者也许现在您需要提供它以某种非常具体的方式,但没有明确记录。

最适合我的gmail版本是Nexus 5X API 25仿真器(牛轧糖)上的6.9.25 ...版本 并且它停止了从7.5.21版本开始的工作...在Nexus 5x API 26仿真器(Oreo)上

答案 4 :(得分:0)

您必须更改&#34; EXTRA_TEXT&#34; for&#34; EXTRA_HTML_TEXT&#34;

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

答案 5 :(得分:-3)

尝试在文本区域添加一些html怎么样?

emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "<strong>Test</strong>");