Vba 使用VBScript通过Outlook发送电子邮件

Vba 使用VBScript通过Outlook发送电子邮件,vba,email,vbscript,outlook,Vba,Email,Vbscript,Outlook,我最近写了一个VBScript,用Outlook发送电子邮件。在到达发送点之前,一切都很顺利。我假设,因为它只打开一条消息,而且消息已发送。。。窗口关闭,Outlook被删除 Set objOutlook = CreateObject("Outlook.Application") Set objMail = objOutlook.CreateItem(0) objMail.Display 'To display message objMail.Recipients.Add ("address

我最近写了一个VBScript,用Outlook发送电子邮件。在到达发送点之前,一切都很顺利。我假设,因为它只打开一条消息,而且消息已发送。。。窗口关闭,Outlook被删除

Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
objMail.Display   'To display message
objMail.Recipients.Add ("address@example.com")
objMail.Subject = "Mail Subject"
objMail.Body = "This is Email Body"
objMail.Send
objOutlook.Quit
Set objMail = Nothing
Set objOutlook = Nothing
所有信息都正确地输入到电子邮件中。但是,一旦执行了send命令,邮件将被放入发件箱中,除非事后手动打开Outlook,否则不会发送。是否有一种方法可以用于在脚本结束之前运行发送/接收?或者是一个延迟,它会让Outlook进程保持活动状态,以便它实际发送

我似乎想不出任何事情,所以非常感谢所有的帮助


谢谢

与应用程序类似。请等待,除非没有额外的延迟,或者等待时间不够长

Dim origSentMailCount as Long

origSentMailCount = objOutlook.GetDefaultFolders(olFolderSentMail).Count

objMail.Send

do until objOutlook.GetDefaultFolders(olFolderSentMail).Count > origSentMailCount
doevents
loop

您的outlook设置为自动发送还是仅每x分钟发送一次?@DragonSamu,这是当前的默认配置。因此,我非常确定它设置为每当他们点击Send时自动发送/接收。我建议使用:Application.WaitNow+TimeValue0:00:10,并检查outlook在关闭前应保持打开多久才能发送电子邮件。然后把这段时间,比如我展示的10秒。