Как устранить ошибку времени выполнения -2147219712 (80040600): `Операция не выполнена - PullRequest
1 голос
/ 02 апреля 2019

Следующий фрагмент кода работает в Windows 10 / Outlook 2013.

В Windows 10 / Outlook 2016 я получаю сообщение об ошибке в строке .send:

Ошибка времени выполнения -2147219712 (80040600): `Операция не выполнена.

Интерфейсы обмена сообщениями возвратили неизвестную ошибку. Если проблема не устранена, перезапустите Outlook. Не удается разрешить получателя.

Option Explicit
Sub email_test()
Dim objOutlookApp               As Outlook.Application
Dim objOriginalItem             As Outlook.MailItem
Dim objNewItem                  As Outlook.MailItem
Dim objInspector                As Outlook.Inspector
Dim objRecipient                As Outlook.Recipient
Dim strEmailAddress             As String
Dim strSubject                  As String

Set objOutlookApp = GetObject(, "Outlook.Application")
Set objInspector = objOutlookApp.ActiveInspector
'Set objOriginalItem so that it can be referenced
Set objOriginalItem = objInspector.CurrentItem
'Set objNewItem to create the new message.
Set objNewItem = objOutlookApp.CreateItem(0)
'Store the original body into the new item body
'Note:  objNewItemBody was altered by code not shown here
objNewItem.Body = objOriginalItem.Body
'Note: strEmailAddress was altered by code not shown here
strEmailAddress = "unique_ name@hotmail.com"
Set objRecipient = objOutlookApp.Session.CreateRecipient(strEmailAddress)
objRecipient.Resolve
MsgBox ("The objrecipient.resolved status is: " & objRecipient.Resolved)
'Set the fields of the MailItem.  Note:  objNewItem.Body was previously set
With objNewItem
    .Display
    .Subject = objOriginalItem.Subject
    .To = objRecipient
        'Loop through the attachments in objOriginalItem
        'Save them to the user's temp folder.
        'Attach them to objNewItem.
    .Send
End With

EXUNT:
Set objOutlookApp = Nothing
Set objOriginalItem = Nothing
Set objNewItem = Nothing
Set objInspector = Nothing

End Sub

В Outlook 2016 MsgBox означает «Истина», в интерфейсе пользователя есть окно, открытое для нового почтового объекта, и адрес электронной почты с соответствующим форматированием.

Когда я нажимаю на поле «Кому» и затем нажимаю «Отправить», электронное письмо отправляется.

Outlook 2013 выдает MsgBox, указывающий «Ложь», но все равно отправляет электронное письмо с вмешательством пользователя.

Как решить эту проблему в Outlook 2016, чтобы отправлять электронную почту без вмешательства пользователя?

1 Ответ

1 голос
/ 03 апреля 2019

0x80040600 - это MAPI_E_CORRUPT_STORE. В случае хранилища PST это, скорее всего, означает, что файл PST поврежден - попробуйте запустить scanpst.exe. В случае кэшированного хранилища Exchange попробуйте удалить файл OST и перезапустить Outlook - он восстановит файл OST.

Коды ошибок MAPI можно найти в OutlookSpy (нажмите «Поиск кодов ошибок» на ленте OutlookSpy).

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