Отправить HTML-письмо с использованием намерения Android
Я создал HTML-код (в комплекте с тегами <html><body></body></html>
) как String. Теперь я хочу отправить этот HTML-код в виде HTML для отправки по электронной почте. Мой код выглядит следующим образом.
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/html");
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
intent.putExtra(Intent.EXTRA_SUBJECT, "I would like to buy the following");
intent.putExtra(Intent.EXTRA_TEXT, purchaseOrder());
startActivity(Intent.createChooser(intent, "sending mail"));
Где purchaseOrder()
- это метод, который передает мне строку с полным кодом HTML. Но хотя клиент GMail открывается на моем Nexus1, но он имеет строку со всеми HTML-тегами, а не фактическое представление HTML. Я попробовал следующее, но получил ошибку. GMail потерпел крах.
intent.putExtra(Intent.EXTRA_STREAM, purchaseOrder());
Ответы
Ответ 1
Это работает для меня:
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("text/html");
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(body));
startActivity(Intent.createChooser(emailIntent, "Email:"));
Но я заметил, что встроенные стили и теги изображений игнорируются...
Ответ 2
Для всех, кто хочет это сделать, отправка электронной почты вручную за кулисами с помощью андроида-javamailer (я это сделал):
http://www.jondev.net/articles/Sending_Emails_without_User_Intervention_%28no_Intents%29_in_Android
Ответ 3
если я не ошибаюсь, что вы искали,
Html.fromHtml()
например.
Html.fromHtml("<a href="www.google.com"> Google</a>");
это сделает Google гиперссылкой
Ответ 4
Это сработало для меня Intent.ACTION_SENDTO
, и мой код здесь:
String mailId="[email protected]";
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..."));
Ответ 5
Попробуйте ниже код:
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_SUBJECT,getResources().getString(R.string.email_subject));
sendIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(getResources().getString(R.string.email_text)));
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, "email"));
string.xml
<resources>
<string name="email_subject">Download App for your smartphone.</string>
<string name="email_text"><![CDATA[Hey,<br/>I just downloaded App on my Android.
<br/>It is a smartphone Manager.<br/>App is available for Android.<br/>
Get it now from http://www.exampleapp.com/download]]></string>