RDOMail.SaveAs иногда не работает над UNC - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть надстройка C # Outlook, использующая библиотеку Redemption.

Эта надстройка, помимо прочего, копирует выбранную почту в общий ресурс в сети.

Обычно это работает довольно хорошо, но иногда файл .msg на общем ресурсе кажется поврежденным.Он не может быть прочитан службой, которая пытается его обработать.Двойной щелчок по нему показывает это сообщение: « Не удается прочитать элемент ».

Иногда я вижу сообщение об ошибке:

SaveEmail - System.Runtime.InteropServices.COMException (0x8007000): Ошибка в StgCreateDocFile : 0x8007000 при Погашение . IRDOMail . SaveAs (путь строки, тип объекта)at XYZNameSpace.Email.SaveEmail (...)

Вот код, который сохраняет почту на общий ресурс:

// Save the mail in a temp local file first
mailItem.SaveAs(temppath, Outlook.OlSaveAsType.olMSG);
(... some processing ...)
// Reload the mail
RDOMail rm = rdoSession.GetMessageFromMsgFile(temppath);
// Save it again on a share
rm.SaveAs(filePathName, Outlook.OlSaveAsType.olMSG);
  • Примечание 1. Я неЗнайте, почему почта сначала сохраняется локально!
  • Примечание 2. Используется более старая версия Redemption (2015).
  • Примечание 3. Размер сообщения не важен.Тем не менее, они

обычно между 2 и 15 МБ.

Заранее большое спасибо.

1 Ответ

0 голосов
/ 16 ноября 2018

IStorage API на самом деле не любит удаленные диски - нет возможности для работы функций совместного использования хранилища.

Открытие и сохранение сообщения во второй раз действительно не имеет особого смысла - почему бы просто не скопировать файл MSG с помощью API файловой системы?

...