[英]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.