繁体   English   中英

Android:HTML附件未与电子邮件一起发送

[英]Android: HTML attachment not being sent with an email

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

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

电子邮件发送正常,但没有附件。 日志中没有错误,也没有引发异常。 我以为它与文件权限有关,因此我确保该文件的创建对所有人都具有读取权限。 我还向子活动(电子邮件客户端)授予READ_URI权限。 因此,我不明白为什么附件没有与电子邮件一起发送。 在搜索了许多有关此内容的文章之后,我似乎正在执行所需的所有操作,但是它没有用。 请注意,我正在使用本文http://blog.blundell-apps.com/html-in-an-email-intent/中所述的HTML文件包装器类,因此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替换了自定义内容提供程序

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

查看消息源,应该使用

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM