WPF Drag and Drop Outlook Электронная почтаC#

Место общения программистов C#
Ответить
Anonymous
 WPF Drag and Drop Outlook Электронная почта

Сообщение Anonymous »

В приложении WPF с .net 8 я пытаюсь реализовать перетаскивание из электронных писем, перетащившихся от MS Outlook, и сохранить перетаскивающую почту на диск. < /p>
Это мой код : < /p>

Код: Выделить всё

private void OnDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent("FileGroupDescriptorW"))
{
SaveOutlookEmail(e);
}
...
}

private void SaveOutlookEmail(DragEventArgs e)
{
try
{
// Extract the file name (metadata)
using (var fileGroupDescriptorStream = (MemoryStream)e.Data.GetData("FileGroupDescriptor"))
{
string fileName = GetFileNameFromDescriptor(fileGroupDescriptorStream);
Debug.WriteLine($"Extracted file name: {fileName}");

// Check if the FileContents format is available
if (e.Data.GetDataPresent("FileContents"))
{
// Extract the file content
using (var fileContentsStream = (Stream)e.Data.GetData("FileContents"))
{
var outputPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), fileName);

// Save the email content to a .msg file
using (var outputFileStream = new FileStream(outputPath, FileMode.Create, FileAccess.Write))
{
fileContentsStream.CopyTo(outputFileStream);
}

Debug.WriteLine($"Email content saved to: {outputPath}");
}
}
}
}
catch (System.Exception ex)
{
Debug.WriteLine($"System Error saving email: {ex.StackTrace}");
}
}
Но инструкция var filecontentsstream = (stream) e.data.getData ("filecontents") генерирует следующее исключение:

Код: Выделить всё

System Error saving email:    at System.Runtime.InteropServices.ComTypes.IDataObject.GetData(FORMATETC& format, STGMEDIUM& medium)
at System.Windows.DataObject.OleConverter.GetDataFromOleIStream(String format, DVASPECT aspect, Int32 index)
at System.Windows.DataObject.OleConverter.GetDataFromBoundOleDataObject(String format, DVASPECT aspect, Int32 index)
at System.Windows.DataObject.OleConverter.GetData(String format, Boolean autoConvert, DVASPECT aspect, Int32 index)
at System.Windows.DataObject.OleConverter.GetData(String format, Boolean autoConvert)
at Test.MainWindow.SaveOutlookEmail(DragEventArgs e) in C:\Projects\Tests\Test\MainWindow.xaml.cs:line 62
Любая идея о том, как я мог бы исследовать проблему, или решить ее?

Подробнее здесь: https://stackoverflow.com/questions/794 ... look-email
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»