如何发送HTML电子邮件

Den*_*sky 35 email android html-email android-intent

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

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");
Run Code Online (Sandbox Code Playgroud)

但我需要发送HTML格式的文本.
尝试setType("text/html")不起作用.

小智 49

你可以传递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())
);
Run Code Online (Sandbox Code Playgroud)

  • @Orsol,是的,这种方式有点.如果你想要格式化的电子邮件,这确实有效,但我想添加一个链接,但遗憾的是没有用:( (6认同)
  • 同意.如果用户选择Gmail发送邮件,则此方法有效.但标准的Android Mail应用程序只会删除HTML格式,包括链接.应该有一种方法为客户端提供HTML和后备文本.但我不知道怎么做. (3认同)
  • 我注意到标签<Table>在GMAIL应用程序和标准Android电子邮件应用程序中都不起作用.我的意思是它不会被格式化为表格. (3认同)
  • Html.fromHtml现已在Android N +中弃用 (2认同)