Проблема с Outlook vba при отправке из учетной записи Hotmail - PullRequest
0 голосов
/ 29 мая 2020

У меня есть программа Outlook VBA, которая отправляет электронные письма списку из 500+ получателей, содержащихся в электронной таблице. Программа работает, но я заметил что-то странное, когда электронные письма отправляются с учетной записи Hotmail. Электронные письма не отправляются, пока макрос не закончится. Кажется, что они где-то приостановлены, пока макрос не закончится.
С другой стороны, когда я отправляю из учетной записи GMail, каждое электронное письмо отправляется, когда встречается код ".send". Я вызываю процедуру задержки (KillSomeTime), чтобы сервер-отправитель не был перегружен и чтобы уменьшить вероятность того, что электронное письмо будет рассматриваться как спам. Но эта процедура задержки бессмысленна, когда ".SendUsingAccount" является учетной записью hotmail, поскольку все они обрабатываются одновременно.
Вот подмножество кода, который отправляет электронные письма:

With objNewItem
    .Display
    'Store the selected sender into objNewItem.SendUsingAccount
    .SendUsingAccount = objSelectedAccount
    'Store the original body into the new item body.
    'NOTE:  HTMLBody preserves the rich text.
    .HTMLBody = objOriginalItem.HTMLBody
    .Subject = objOriginalItem.Subject
    .To = strEmailAddress
        'Loop through the attachments in objOriginalItem
        'Save them to the user's temp folder.
        'Attach them to objNewItem.
        For Each objAtt In objOriginalItem.Attachments
            strAttFile = strTempPath & objAtt
            objAtt.SaveAsFile strAttFile
            objNewItem.Attachments.Add strAttFile, , , objAtt.DisplayName
            objFSO.DeleteFile strAttFile
        Next
    .Send
    'Set and Start objSyncObject to execute "Send / Receive" for this item
    Set objSyncObject = objSyncObjects(1)
    objSyncObject.Start
    'Call the log_event function
    Call log_event(strSubject, strEmailAddress)
    'Call the kill_some_time function
    Call kill_some_time(lngPauseTime)
End With

Есть ли каким-либо способом внести изменения в код, чтобы он учитывал причину задержки Hotmail при выполнении ".Send"?

1 Ответ

0 голосов
/ 29 мая 2020

Вы можете попробовать использовать свойство MailItem.DeferredDeliveryTime , которое позволяет установить дату, указывающую дату и время доставки почтового сообщения.

...