2

我正在尝试发送一封邮件以及附加的多个文件,但是我无法将它们添加到邮件中。我这样进行:

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 肯定是有效的......

我真的需要帮助。

4

2 回答 2

2

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

于 2013-02-27T22:49:34.930 回答
0

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

于 2013-02-22T10:38:17.723 回答