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 ());