我正在尝试发送一封邮件以及附加的多个文件,但是我无法将它们添加到邮件中。我这样进行:
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);
}
我检查了字符串中的路径是好的..但是方法.Exists(在foreach中的Java.IO.File上使用时)返回false。可能是原因?
谢谢您的帮助。
编辑:
尝试添加单个附件时,它工作得很好。但是,每当我调用一个暗示将有多个附件的函数时,它都会失败。
又名:
Intent i = new Intent (Android.Content.Intent.ActionSend);
var uri = Android.Net.Uri.Parse (ex._FileLocation);
i.PutExtra(Intent.ExtraStream, uri);
工作得很好但是更换
Intent i = new Intent (Android.Content.Intent.ActionSend);
经过
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 ());
...我正在使用默认邮件应用程序(不是 gmail) 我还尝试按照其他地方的建议将意图类型设置为“ * / * ”(不带空格)。还尝试了 AddFlags (ActivityFlags.GrantReadUriPermission);
由于它适用于单个附件,因此我知道 URI 肯定是有效的......
我真的需要帮助。