6Answers
  • 12
name

A PHP Error was encountered

Severity: Notice

Message: Undefined index: userid

Filename: views/question.php

Line Number: 191

Backtrace:

File: /home/prodcxja/public_html/questions/application/views/question.php
Line: 191
Function: _error_handler

File: /home/prodcxja/public_html/questions/application/controllers/Questions.php
Line: 433
Function: view

File: /home/prodcxja/public_html/questions/index.php
Line: 315
Function: require_once

name Punditsdkoslkdosdkoskdo

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[]{"example@mail.com"}); 
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.

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())
);
  • 49
Reply Report
      • 2
    • @Orsol, Yes this works sort of. If you want formatted email, this does work, however I wanted to add a link, which unfortunately did not work:(
      • 2
    • glo the problem with that is, while it works with gmail, it doesn't work with every email client. So if you need that link in there and someone other then gmail can grab it then you cannot use your solution.
      • 2
    • Agreed. This works if the user picks Gmail to send the message. But the standard Android Mail app just drops the HTML formatting including links. There should be a way to provide both HTML and fallback text for the client. But I don't know how.
      • 1
    • I noticed that The tag does not work in both GMAIL app and the standard Android Email app. I mean it does not get formatted as a table.

      This was very helpful to me for the HTML, but the ACTION_SENDTO didn't quite work for me as is - I got an "action not supported" message. I found a variant here which does:

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

      And here's my code which combines the two together:

      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..."));
      
      • 3
      Reply Report
        • Have you tested this ? This looks fine in the native android email client on the emulator (not Gmail) but text does not appear styled when sent to a gmail account. In addition, the linked URL you give isn't visible.

      I haven't (yet) started Android development, but the documentation for the intent says that if you use EXTRA_TEXT, the MIME type should be text/plain. Seems like if you want to see HTML, you'd have to use EXTRA_STREAM instead...

      • 2
      Reply Report
          • 2
        • This works partly. I attached file but it MIME type always textplain in resulting letter. I tried to set emailIntent.setType("html/text"); with no luck.

      Been trying to send html via gmail app for a while, so decided to leave some insight on what I found, just in case someone else is having similar issues.

      Seems like no matter what I did, I couldn't get the html to have bold text in it. Then I've tried switching to outlook client and to my surprise it was working just fine. Html markup was also working on other older devices, but not on mine (galaxy s7 API 26), so I figured, that gmail app seems to have dropped support for html syntax that comes from intent or maybe now you're required to provide it in some very specific way which is not clearly documented.

      Last gmail version that worked for me was version 6.9.25... on Nexus 5X API 25 emulator (Nougat) And it stopped working starting version 7.5.21... On Nexus 5x API 26 emulator (Oreo)

      • 1
      Reply Report