Исходя из этого потока , я сталкиваюсь с ошибками при первой попытке вызова 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.