【问题标题】:Using a VBScript to send an email through Outlook使用 VBScript 通过 Outlook 发送电子邮件
【发布时间】:2015-11-13 13:00:40
【问题描述】:

我最近编写了一个 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

所有信息都正确输入到电子邮件中。但是,一旦执行发送命令,邮件就会被放入发件箱并且永远不会发送,除非事后手动打开 Outlook。有没有一种方法可以用来在脚本结束之前运行发送/接收?还是延迟让 Outlook 进程保持活动状态才能实际发送?

我似乎无法想到任何事情,因此感谢所有帮助。

谢谢

【问题讨论】:

  • 您的 Outlook 是设置为自动发送还是每 x 分钟发送一次?
  • @DragonSamu,目前是默认配置。所以我很确定每当他们点击发送时它被设置为自动发送/接收
  • 我建议使用:Application.Wait(Now + TimeValue("0:00:10")) 并检查在关闭发送电子邮件之前前景应该保持打开多长时间。然后像我展示的那样把时间设置为 10 秒。

标签: vba email vbscript outlook


【解决方案1】:

类似于 Application.Wait,除了没有额外的延迟,也没有等待时间不够长的可能性。

Dim origSentMailCount as Long

origSentMailCount = objOutlook.GetDefaultFolders(olFolderSentMail).Count

objMail.Send

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

【讨论】:

    猜你喜欢
    • 2011-09-14
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多