WP8中的EmailComposeTask问题

本文关键字:问题 EmailComposeTask 中的 WP8 | 更新日期: 2023-09-27 18:27:21

我正在处理一个场景,在这个场景中,我需要通过wp8应用程序的按钮点击事件将保存在隔离存储文件中的日志发送到电子邮件中。,我打算这样做

        private void BtnGetLogs_OnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                var isoStore = IsolatedStorageFile.GetUserStoreForApplication();
                //Check if the isolated file exists
                if (isoStore.FileExists(LogFileName))
                {
                    Debug.WriteLine("The file exists!");
                    // Open the filestream to read the file
                    var isoStream = new IsolatedStorageFileStream(LogFileName, FileMode.Open, isoStore);
                    var reader = new StreamReader(isoStream);
                    string text = reader.ReadToEnd();
                    SendLogsToEmail(text.Substring(length));
         }

这是我发送电子邮件的功能,

        private void SendLogsToEmail(string body)
        {
            var emailComposeTask = new EmailComposeTask();
            {
                emailComposeTask.Subject = "Log file to mail";
                emailComposeTask.Body = body;
                emailComposeTask.To = "sample@gmail.com";
            };
            emailComposeTask.Show();
        }

我也想介绍一下这个问题的背景。这纯粹是一个windows phone 8.0项目,所以我无法发送任何附件。这就是我试图读取所有文件内容并通过邮件发送的原因。请注意,这是我正在研究的解决方案。这是一种边缘情况,因为OEM安全问题,我无法从IsoStoreSpy或任何其他工具获取日志。因此,在应用程序本身中,我有一个按钮单击事件,它读取隔离的存储文件并向指定用户发送邮件。

问题是,我在emailComposeTask.Show();得到一个ArgumentOutOfRangeException,错误消息是,

Specified argument was out of the range of valid values.
Parameter name: The size of input should not exceed 64K.

日志文件实际上是一个相当大的文件。这个问题有一个优雅的解决方案吗?

WP8中的EmailComposeTask问题

这里的错误是自我解释的,您正试图将电子邮件正文设置为过长的文本。

你最好把日志上传到OneDrive之类的地方。

当我将曲目作为kml或gpx文件发送电子邮件时,我的NZ Topo Map应用程序也遇到了同样的问题。我的解决方案是创建一个简单的在线服务,我首先通过http将文件发布到该服务。这个服务会为我将文件存储在一个在线位置,然后将url作为响应发送到文件。然后我会在电子邮件中包含一个指向该文件的链接,而不是附加该文件。