Android:HTML附件未通过电子邮件发送

时间:2013-11-24 10:24:21

标签: java android android-intent

我正在使用模拟器开发一个应用程序,其中包括一个电子邮件发送工具。电子邮件需要有HTML附件。 HTML文件正在应用程序的缓存区域中创建,我已经验证它存在,内容正确。该文件位于

/data/data/<package name>/cache/temp_file.html

电子邮件发送正常,但没有附件。日志中没有错误,也没有抛出异常。我认为这与文件权限有关,所以我 确保创建的文件具有对每个人的读访问权限。我还授予子活动(电子邮件客户端)READ_URI权限。所以我不明白为什么附件没有随电子邮件一起发送。在搜索了很多文章之后,我似乎正在做所需的一切,但它没有用。请注意,我正在使用本文中所述的HTML文件包装类http://blog.blundell-apps.com/html-in-an-email-intent/ 因此getFilePath()会返回文件附件的Uri。

private void sendToRecipients(String[] emails) {
      HtmlFile emailText = buildEmailContent();
      Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
      emailIntent.setType("text/html");
      emailIntent.putExtra(Intent.EXTRA_EMAIL, emails);
      emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Details");
      emailIntent.putExtra(Intent.EXTRA_TEXT, "Details");
      emailIntent.putExtra(Intent.EXTRA_STREAM, emailText.getFilePath());
      emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);     
      startActivity(Intent.createChooser(emailIntent, "email"));
}

我也在使用内容提供程序,它在清单中声明如下 -

    <provider
        android:name="<package>.CacheFileProvider"
        android:authorities="<my authority>"
        android:enabled="true"
        android:exported="true"
        android:grantUriPermissions="true"
    />

更新

在阅读此http://developer.android.com/reference/android/support/v4/content/FileProvider.html

后,我已使用FileProvider替换了自定义内容提供程序

所以我现在可以在Gmail邮件编辑器中看到我的html文件。一切看起来都不错,但是当收到消息时,没有附件!

查看消息来源,应该收到

Content-Type: multipart/alternative 

以及附加的HTML部分。但是我没有在收到的消息中看到任何附加的HTML。我得到的只是一个

Content-Type: text/plain

更新

我决定忘记使用Gmail客户端应用。只需直接发送文件(加上附件),无需用户干预。此页面包含您需要的所有信息

http://www.jondev.net/articles/Sending_Emails_without_User_Intervention_%28no_Intents%29_in_Android

2 个答案:

答案 0 :(得分:1)

总结一下,对我来说,答案是不要使用Intents并通过以编程方式发送电子邮件来完全绕过Gmail客户端应用程序。无论如何,这是我的首选方式。 我按照这里的指南

http://www.jondev.net/articles/Sending_Emails_without_User_Intervention_%28no_Intents%29_in_Android

答案 1 :(得分:0)

这可能是因为电子邮件应用无法从您的私人空间获取。尝试将其放在外部存储设备上。