我真的不太了解VB脚本,我可以帮助解决这个小问题。
我正在尝试每天早上运行某个脚本(计划任务)后发送电子邮件。现在,我们的电子邮件服务器配置为阻止发送自动电子邮件 - 这是我一般都很欣赏的功能 - 因此我需要模拟按键以确认警告框并实际发送电子邮件。
这是我到目前为止的脚本:
Sub SendEmail_Outlook()
Set WshShell = WScript.CreateObject("WScript.Shell")
Set ol=CreateObject("Outlook.Application")
Set Mail=ol.CreateItem(0)
Mail.to= "X@xyz.com"
Mail.Subject = "Subject"
Mail.HTMLBody = "Body"
Mail.Display
WScript.Sleep 1000
WshShell.SendKeys "%s"
Set Mail = Nothing
Set ol = Nothing
End Sub
SendEmail_Outlook
该脚本的功能类似于魅力 ,但前提是我已登录 。如果我没有登录,则会准备电子邮件草稿,窗口已激活,但实际上并未发送电子邮件。我假设是因为如果没有人登录,模拟按键不起作用?
所以,问题是:有没有办法“调整”这个脚本,即使没有人登录也可以运行?
非常感谢,帮助将不胜感激!
菲利普
答案 0 :(得分:0)
你检查过vbscript [info]部分了吗?它解释了当用户未登录时cscript.exe如何执行vbscript。
“注意:由于将脚本作为控制台应用程序而不是Windows应用程序运行,预定的VBScript任务在Cscript.exe下成功。计算机/域策略限制Windows应用程序的激活,而不记录任何用户上“。
修改强>
通过.Send属性激活发送电子邮件,而不是使用sendkeys方法。
Sub SendEmail_Outlook()
Set WshShell = WScript.CreateObject("WScript.Shell")
Set ol=CreateObject("Outlook.Application")
Set Mail=ol.CreateItem(0)
Mail.to= "X@xyz.com"
Mail.Subject = "Subject"
Mail.HTMLBody = "Body"
Mail.Display
WScript.Sleep 1000
'-----------
Mail.Send
'-----------
Set Mail = Nothing
Set ol = Nothing
End Sub
SendEmail_Outlook
有关直接自动化电子邮件的更多信息,Outlook应用程序也可在此处引用:Link
答案 1 :(得分:0)
在同事的帮助下,我认为我找到了答案 - 至少它是我已经实施的一个选项,它似乎到目前为止成功运行。因为这也可能引起其他人的兴趣,我们所做的就是:
使用以下脚本:
Sub SendEmail_Outlook() 设置WshShell = WScript.CreateObject(" WScript.Shell") 设置oApp = CreateObject(" Outlook.Application") 设置NS = oApp.GetNamespace(" MAPI") NS.Logon 设置SafeItem = CreateObject(" Redemption.SafeMailItem") 设置oMailItem = oApp.CreateItem(0)
SafeItem.Item = oMailItem
SafeItem.To = "x@yz.com"
SafeItem.Subject = "Subject"
SafeItem.BodyFormat = 2
SafeItem.HTMLBody = "Body"
SafeItem.Send
SafeItem = Nothing
Set oMailItem = Nothing
Set NS = Nothing
Set oApp = Nothing
End Sub
SendEmail_Outlook
如上所示,尽管最后收到错误,但脚本运行顺利,并说:
VBScript runtime error: Object variable not set: 'SafeItem'
但是,电子邮件到了,所以错误并没有让我感到烦恼......; - )