Search code examples
androidemailandroid-intenthtml-email

How to send HTML email


i found a way to send plain text email using intent:

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

But I need to send HTML formatted text.
Trying to setType("text/html") doesn't work.


Solution

  • You can pass Spanned text in your extra. To ensure that the intent resolves only to activities that handle email (e.g. Gmail and Email apps), you can use ACTION_SENDTO with a Uri beginning with the mailto scheme. This will also work if you don't know the recipient beforehand:

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