Android Monodroid-多邮件附件

Android Monodroid-多邮件附件,android,email,attachment,Android,Email,Attachment,我正在尝试发送一封包含多个附加文件的邮件,但无法将它们添加到邮件中。 我这样说: private void SendMail (List<Data> ToSend) { var Attachments = new List<Android.Net.Uri>(); Intent i = new Intent (Android.Content.Intent.ActionSendMultiple); i.SetType (

我正在尝试发送一封包含多个附加文件的邮件,但无法将它们添加到邮件中。 我这样说:

private void SendMail (List<Data> ToSend)
    {
        var Attachments = new List<Android.Net.Uri>();
        Intent i = new Intent (Android.Content.Intent.ActionSendMultiple);
        i.SetType ("message/rfc822");
        i.PutExtra (Android.Content.Intent.ExtraEmail, new String[]{"try@mail.com"});
        i.PutExtra (Android.Content.Intent.ExtraSubject, "Test");
        i.PutExtra (Android.Content.Intent.ExtraText, "Test Test...");
        foreach (var content in ToSend) {
            Java.IO.File myFile = new Java.IO.File(content.attachmentloc);
            // attachmentloc is a string containing the absolute path to the file to attach.
            var uri = Android.Net.Uri.FromFile(myFile);
            Attachments.Add (uri);
        }
        i.PutParcelableArrayListExtra(Android.Content.Intent.ExtraStream, Attachments.ToArray());
        StartActivityForResult(Intent.CreateChooser(i, "Send mail..."), 0);
    }
不过效果很好

    Intent i = new Intent (Android.Content.Intent.ActionSend);

导致相同的故障,更换也会导致相同的故障:

var uri = Android.Net.Uri.Parse (ex._FileLocation);
i.PutExtra(Intent.ExtraStream, uri);

var Attachments=新列表();
foreach(ToSend中的var ex){
var uri=Android.Net.uri.Parse(例如文件位置);
附件.添加(uri);
//o
}
i、 PutParcelableArrayListExtra(Android.Content.Intent.ExtraStream,Attachments.ToArray());
。。。我使用的是默认邮件应用程序(不是gmail) 我还尝试将intent类型设置为“*/*”(不带空格),正如其他地方建议的那样。 还尝试了AddFlags(ActivityFlags.GrantReadUriPermission)

由于它与单个附件一起工作,我知道URI肯定是有效的


我真的需要帮助。

可能是,邮件活动没有足够的权限读取您的文件。在创建文件时,或者在添加到附件数组之前,尝试添加myFile.setReadable(true,false)。

我个人没有找到这个问题的有效答案。
我找到的唯一答案是一种变通方法:将所有文件压缩到一个.zip归档文件中,并将该归档文件作为单个附件发送。

除非我遗漏了什么,否则我的代码很可能是相同的。。很明显我以前就找到了答案。。。但这对我来说不起作用:我可能做错了什么,但找不到什么。
    Intent i = new Intent (Android.Content.Intent.ActionSendMultiple);
var uri = Android.Net.Uri.Parse (ex._FileLocation);
i.PutExtra(Intent.ExtraStream, uri);
var Attachments = new List<Android.Net.Uri> ();
                foreach (var ex in ToSend) {
                var uri = Android.Net.Uri.Parse (ex._FileLocation);
                Attachments.Add (uri);
                //o
            }
            i.PutParcelableArrayListExtra (Android.Content.Intent.ExtraStream, Attachments.ToArray ());