Погашение: первая попытка SaveAs на отправленном элементе не удалась после попытки получить идентификатор сообщения сервера - PullRequest
0 голосов
/ 23 июня 2018

Исходя из этого потока , я сталкиваюсь с ошибками при первой попытке вызова SaveAs объекта RDOMail после использования предложенного метода в связанном ответе для получениязаголовок Message-ID сервера.Я хочу получить идентификатор сообщения сервера, потому что это канонический идентификатор (и первичный ключ) для сообщений для моих целей.

Первая попытка SaveAs с использованием метода 1024 дает мне Ошибка вIMessage.GetAttachmentTable: MAPI_E_NOT_FOUND , но если я снова попытаюсь сохранить (то есть снова выполнить весь код в методе сохранения), он успешно выполнит сохранение, и я вижу, что он успешно получил идентификатор сообщения сервера.

Я пытался использовать 1030 и 1031 для SaveAs, и они ведут себя одинаково (первый сбой, затем успешный), с 1030, возвращая немного другую ошибку: IConverterSession.MAPIToMIMEStm: MAPI_E_NOT_FOUND (1031возвращает ту же ошибку, что и 1024).

У меня есть глобальное поле в ThisAddin для сеанса погашения:

Public Shared rSession As Object

И я назначаю его в ThisAddin.Startup с помощью RedemptionLoader:

rSession = Redemption.RedemptionLoader.new_RDOSession
rSession.MAPIOBJECT = Globals.ThisAddIn.Application.Session.MAPIOBJECT

Затем в моем классе, который управляет сохранением электронных писем, я использую предложенный метод следующим образом:

Dim rdoMailItem As Object
Dim MAPI_NO_CACHE = &H209
Dim MAPI_BEST_ACCESS = &H10
Try
    rdoMailItem = ThisAddIn.rSession.GetMessageFromID(someEntryId, , MAPI_BEST_ACCESS + MAPI_NO_CACHE)
    Dim dummyString = rdoMailItem.Fields("http://schemas.microsoft.com/mapi/proptag/0x1035001F")
    rdoMailItem.SaveAs(someFilePath, 1024)
Catch ex as Exception
    Debug.Print(ex.Message)
End Try

Если я опущу дополнительные аргументы изметод GetMessageFromID, и не пытайтесь получить свойство, используя .Fields(...), я не получаю ошибок и SaveAs работает в первый раз (но, конечно, это не дает мне идентификатор сообщения сервера).Таким образом, это поведение возникает из-за специальных опций и извлечения полей.

Используется Redemption версия 5.15.0.4892;такое же поведение для 5.11.0.4476, которое мне пригодилось.Outlook 2010, подключенный к учетной записи обмена Office365.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...