У меня есть программа 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"?