Я написал небольшой макрос для отправки электронной почты каждую пятницу примерно 20 людям из разных отделов в офисе.Я сделал так, чтобы у меня была электронная таблица с именем и адресом электронной почты, а затем циклически просматривая ее, изменяя соответствующую информацию.Я хочу, чтобы электронное письмо отправлялось каждому человеку, поэтому нет, другие получатели не должны быть CC или BCC'd.
Это работает.Однако, чтобы избежать проблем, я поставил паузу, чтобы каждое электронное письмо отправлялось каждые 6 секунд, по 10 блоков с паузой около 10 секунд между блоками.Я полагаю, что пауза создает задержку, и, хотя задание завершено, я не могу использовать Outlook (для проверки других сообщений электронной почты или задач).
Есть ли способ заставить Outlook отправлять каждое письмо в некотором роде "Тихий режим "?
Здесь код:
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
Sub PrepareEmail()
.
.'A bunch of variable and simple data manipulation is done here.
.
For emailLooper = 0 To BrokerForm.LstBoxBrokers.ListCount - 1
Set oMail = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
iConf.Load -1 ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mySMTPserver"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "username"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"
.Update
End With
With oMail
Set .Configuration = iConf
.Subject = asunto
.HTMLBody = emailText & signatureEmail
destName = BrokerForm.LstBoxBrokers.List(emailLooper, 0)
emailAddress = BrokerForm.LstBoxBrokers.List(emailLooper, 1)
.HTMLBody = Replace(.HTMLBody, "#name#", destName)
.To = emailAddress
.From = senderEmail
.Send
emailsSent = emailsSent + 1
Sleep (6000)
If emailLooper / 10 = Fix(emailLooper / 10) Then
Sleep (11000)
End If
End With
Set oMail = Nothing
Set iConf = Nothing
Set Flds = Nothing
Next emailLooper