WP8中的EmailComposeTask问题

时间:2014-10-20 16:08:35

标签: c# windows windows-phone-8 windows-phone

我正在开发一个场景,我需要将保存在隔离存储文件中的日志发送到来自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.

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

2 个答案:

答案 0 :(得分:0)

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

您最好将日志上传到像OneDrive这样的地方。

答案 1 :(得分:0)

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