我正在尝试使用意图从Android应用发送HTML电子邮件。我使用以下代码:
Intent i = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto",senderMail, null));
i.setType("text/html");
i.putExtra(Intent.EXTRA_EMAIL, new String[]{senderMail});
if (strShare == "Y")
i.putExtra(Intent.EXTRA_CC, new String[]{email});
else
i.putExtra(Intent.EXTRA_BCC, new String[]{email});
i.putExtra(Intent.EXTRA_SUBJECT, subjectMessage);
String htmlData = (new StringBuilder()
.append("<html><head></head><body><p><b>Hello World!</b></p>")
.append("<a>http://www.google.com</a>")
.append("<small><p>More content</p></small></body></html>")
.toString());
i.putExtra(Intent.EXTRA_TEXT,fromHtml(htmlData));
i.putExtra(Intent.EXTRA_HTML_TEXT,htmlData);
i.setData(Uri.parse("mailto:" + senderMail));
try {
startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
Utils.displayAlert("There are no email clients installed.", getActivity());
}
public static Spanned fromHtml(String source) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return Html.fromHtml(source, Html.FROM_HTML_MODE_LEGACY);
} else {
return Html.fromHtml(source);
}
}
我也尝试过使用:
i.setType("message/rfc822");
我试过没有EXTRA_HTML_TEXT。
当我选择gmail应用程序发送电子邮件时,一切都按预期工作,并发送HTML电子邮件。但是当我选择内置的电子邮件应用程序时,HTML代码在电子邮件编写器中正确呈现(所以我知道它处理HTML代码),但当电子邮件到达目的地时,它是纯文本电子邮件,内容是纯文本,所有内容都是从中删除了HTML标记。
我正在使用Android Studio 2.3并在两个不同的仿真器(Nexus 5 API 23和Nexus 5 API 21 x86)和摩托罗拉手机上运行代码,所有这些都具有相同的结果。
有人可以告诉我,我做错了吗?