我正在开发一个场景,我需要将保存在隔离存储文件中的日志发送到来自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.
日志文件实际上是一个非常大的文件。这个问题有优雅的解决方案吗?
答案 0 :(得分:0)
错误是在这里自我解释,您正在尝试将电子邮件正文设置为太长的文本。
您最好将日志上传到像OneDrive这样的地方。
答案 1 :(得分:0)
将电子邮件发送为kml或gpx文件时,我的NZ Topo Map app遇到了同样的问题。我的解决方案是创建一个简单的在线服务,我首先通过http发布文件。此服务会将文件存储在我的在线位置,然后将该URL作为回复发送到该文件。然后,我会在电子邮件中包含指向该文件的链接,而不是附加文件。