使用Android意图发送HTML电子邮件

19

我已经生成了一段HTML代码(包含了<html><body></body></html>标签),作为一个字符串。现在我想将这个HTML代码作为HTML格式发送到邮箱中。我的代码如下所示。

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/html");
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"me@mydomain.com"});
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());

4
由于内置邮件应用程序无法格式化邮件,因此使用意图方法可能无法实现。 - Jim Blackler
可能是重复的问题:如何发送HTML电子邮件 - Paul Lammertsma
5个回答

27

这对我有效:

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:"));

但是我注意到内联样式和图像标签被忽略了...


1
这对我也起作用了,有点棘手,但在 Gmail 上可以工作。 - mattlary
这对我也起作用了,应该是问题的正确答案。 - zeh
@iDroidExplorer的body只是一个字符串。String body = "<h1>测试</h1>"; - Blundell
这个意图并不仅限于发送电子邮件。它是用于共享数据到一个接受HTML格式的应用程序。恰好Gmail符合这个约束条件。 - Paul Lammertsma
2
弹出对话框显示“没有应用程序可以执行此操作。”只有一个 Gmail 客户端被安装。 - jaleel
1
雅虎邮件应用程序中的格式已经丢失。 - Bitneko

4

1
是的,但您可以使用自己的业务电子邮件和密码来避免需要用户信息来发送电子邮件。 - Eenvincible
2
这个怎么安全呢?即使代码被混淆,我仍然可以在代码中以及strings.xml文件中搜索字符串,找到用户名和密码。 - Timmy Simons

1

这对我有用 Intent.ACTION_SENDTO,我的代码在这里:

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..."));

1

如果我没记错,你要找的是

   Html.fromHtml()

例如:

Html.fromHtml("<a href="www.google.com"> Google</a>");

这将使谷歌成为超链接


1

Try Below Code :

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>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接