Lotus Notes - сохранение поврежденного вложения программным способом - NotesEmbeddedObject - PullRequest
1 голос
/ 24 июня 2011

У меня есть NSF, который содержит сообщение электронной почты с двумя вложениями. Одно из вложений повреждено, и, если я попытаюсь его сохранить, Notes отобразит это сообщение The attachment may be corrupted. Would you like to continue with the available data?

Если я нажму Да, Notes сохранит поврежденное вложение в указанный мной каталог. Это хорошо.

Я хотел бы сделать то же самое, используя объектную модель в C #. Если я запускаю NotesEmbeddedObject.ExtractFile(), я получаю сообщение об исключении: Notes error: Encoded Data Checksum Mismatch - Attachment may be corrupted. В указанный мной каталог не записано ни одной версии файла.

Я бы хотел, чтобы код записал поврежденную версию в каталог. Как я могу это сделать?

Существующий код:

//BEGIN Extract Attachment
//nItem is a NotesItem
if (nItem.type == IT_TYPE.ATTACHMENT)
{
    try
    {
        string pAttachment = ((object[])nItem.Values)[0].ToString();
        NotesDocument NDoc =  NotesConnectionDatabase.AllDocuments.GetNthDocument(i);
        NotesEmbeddedObject Neo = NDoc.GetAttachment(pAttachment);
        NDoc.GetAttachment(pAttachment).ExtractFile(@"D:\projects\xxx\Attach\" + pAttachment);
    }
    catch (Exception e)
    {
        string eMessage = e.Message;
        Console.WriteLine(eMessage);
    }
}
//END Extract Attachment

1 Ответ

3 голосов
/ 25 июня 2011

Боюсь, что нет.

Метод NotesEmbeddedObject.ExtractFile пытается извлечь вложение, но есть несоответствие контрольной суммы, и, как только он получает эту ошибку, он вызывает исключение.

Я не знаю каких-либо других внутренних классов Notes, которые имеют дело с вложениями (может быть, кто-то еще ...)

...