【问题标题】:Send HTML mail using Android intent使用 Android Intent 发送 HTML 邮件
【发布时间】:2010-03-30 09:36:59
【问题描述】:

我生成了一个 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());

【问题讨论】:

  • 由于您无法在内置邮件应用程序中格式化邮件,因此使用 Intent 方法可能无法做到这一点。
  • How to send HTML email 的可能重复项

标签: html android email android-intent


【解决方案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:"));

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

【讨论】:

  • 这对我也有用,有点棘手,但无论如何它都可以通过 gmail 使用
  • 这对我也有用,它应该是问题的正确答案。
  • @iDroidExplorer body 只是一个字符串。 String body = "<h1>Test</h1>";
  • 获取对话框为“没有应用程序可以执行此操作。”安装了一个 gmail 客户端。
  • 雅虎邮件应用程序中的格式已消失
【解决方案2】:

对于其他想要这样做的人,使用 android-javamailer 在幕后手动发送电子邮件是可行的(我已经做到了):

Sending Emails without User Intervention (no intents) in Android

【讨论】:

  • 可以,但是您可以使用自己的企业邮箱和密码来避免需要用户信息来发送电子邮件
  • 这如何安全?即使代码被混淆了,我仍然可以在代码中以及在 strings.xml 中搜索字符串并找到用户名和密码。
【解决方案3】:

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

   Html.fromHtml()

例如

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

这将使谷歌成为一个超链接

【讨论】:

    【解决方案4】:

    这对我有用 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..."));
    

    【讨论】:

      【解决方案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"));
      

      字符串.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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-24
        • 1970-01-01
        • 1970-01-01
        • 2012-02-24
        相关资源
        最近更新 更多