【问题标题】:Getting multiple attachments to email in both Mail and Gmail with Android使用 Android 在 Mail 和 Gmail 中获取多个电子邮件附件
【发布时间】:2013-08-22 13:06:50
【问题描述】:

我可以让 Mail 和 Gmail 将多个 csv 文件附加到电子邮件中。

当通过邮件发送时,所有附件都会送达。
当通过 Gmail 发送时,没有发送任何附件。

我已阅读文档Send Binary Content。我已经搜索但只找到了一个不适用于 Mail 的 Gmail 解决方案。 Mail 似乎对任何方法都很满意。 Gmail 就是不想玩。

有没有人找到发送多个附件同时适用于 Mail 和 Gmail 的解决方案?

final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
String subject = context.getString(R.string.export_data_email_header);
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
emailIntent.setType("text/csv");

ArrayList<Uri> uris = new ArrayList<Uri>();
if (diariesSelected) uris.add(Uri.fromFile(context.getFileStreamPath("diaries.csv")));
...
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);

context.startActivity(emailIntent);

以及用于创建文件的代码

 FileOutputStream fos = context.openFileOutput(path, Context.MODE_WORLD_READABLE);
 OutputStreamWriter writer = new OutputStreamWriter(fos);
 writer.append(builder.toString());
 writer.close();
 fos.close();

【问题讨论】:

  • 你解决这个问题了吗?
  • @Sanket 没有找到答案,目前坐在太硬的篮子里。

标签: android


【解决方案1】:

以下代码是来自我的一个应用程序的 sn-p。据我记得,它适用于 GMail 和 Mail(目前无法验证。)。它看起来基本上像您的解决方案,但有一些小差异。也许其中之一就是您正在寻找的东西。 :)

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("text/plain");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { "address@mail.com" });
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "The subject");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "The actual message");

ArrayList<Uri> attachmentUris = new ArrayList<Uri>();

for (File attachment : attachments) {
    attachmentUris.add(Uri.fromFile(attachment));
}

emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, attachmentUris);

startActivity(emailIntent);

【讨论】:

  • 感谢forgemo,但没有运气。我尝试将 setType 方法向上移动并将其更改为 text/plain。如果此代码确实适用于 Gmail,则对您如何创建文件感兴趣
【解决方案2】:

这里可以获取详细信息https://stackoverflow.com/a/18225100/942224

通过使用下面的代码,我在 gmail 或 Mail 中附加图像文件....希望它对您有所帮助

Intent ei = new Intent(Intent.ACTION_SEND_MULTIPLE);
        ei.setType("plain/text");
        ei.putExtra(Intent.EXTRA_EMAIL, new String[] {"email id"});
        ei.putExtra(Intent.EXTRA_SUBJECT, "That one works");

        ArrayList<String> fileList = new ArrayList<String>();
        fileList.add(Environment.getExternalStorageDirectory()+"/foldername/certi/qualifications.jpg");
        fileList.add(Environment.getExternalStorageDirectory()+"/foldername/certi/certificate.jpg");
        fileList.add(Environment.getExternalStorageDirectory()+"/foldername/Aa.pdf");

        ArrayList<Uri> uris = new ArrayList<Uri>();
        //convert from paths to Android friendly Parcelable Uri's

        for (int i=0;i<fileList.size();i++)
        {
            File fileIn = new File(fileList.get(i));
            Uri u = Uri.fromFile(fileIn);
            uris.add(u);
        }

        ei.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
        startActivityForResult(Intent.createChooser(ei, "Sending multiple attachment"), 12345);

【讨论】:

  • 感谢 Sanket,但我需要发送多个附件,此解决方案只能让我发送一个附件。描述解释了这一点,但我改进了标题,所以现在很清楚。我需要发送多个文件。
猜你喜欢
  • 2023-03-14
  • 2023-04-08
  • 2016-06-12
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 2011-01-16
  • 2022-01-25
  • 2016-06-25
相关资源
最近更新 更多