VBScript无需运行Outlook即可发送电子邮件

时间:2011-08-12 14:54:30

标签: vbscript sendmail outlook-2007

我已经编写了一个每晚运行的自动化测试,我想在测试完成后每晚通过电子邮件发送结果。

为了做到这一点,我尝试将以下内容放在我的批处理文件的末尾:

Set MyApp = CreateObject("Outlook.Application")
Set MyItem = MyApp.CreateItem(0)
With MyItem
    .To = "a@a.com"
    .Subject = "Subject"
    .ReadReceiptRequested = False
    .HTMLBody = "resport"
End With
MyItem.Send

但是,这导致电子邮件无法发送,因为我的Outlook未打开,因为测试是在后台运行的,而我无法访问用户界面。

无论如何都要发送此电子邮件而不在机器上实际运行Outlook。

谢谢!

2 个答案:

答案 0 :(得分:26)

您可以使用 CDO.Message 对象在VBScript中发送不带Outlook的电子邮件。您需要知道SMTP服务器的地址才能使用它:

Set MyEmail=CreateObject("CDO.Message")

MyEmail.Subject="Subject"
MyEmail.From="name@domain.com"
MyEmail.To="a@a.com"
MyEmail.TextBody="Testing one two three."

MyEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing")=2

'SMTP Server
MyEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver")="smtp.server.com"

'SMTP Port
MyEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25 

MyEmail.Configuration.Fields.Update
MyEmail.Send

set MyEmail=nothing

如果您的SMTP服务器需要用户名和密码,请将这些行粘贴到MyEmail.Configuration.Fields.Update行上方:

'SMTP Auth (For Windows Auth set this to 2)
MyEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1
'Username
MyEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername")="username" 
'Password
MyEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword")="password"

有关使用CDO发送带有VBScript的电子邮件的更多信息,请访问以下链接: http://www.paulsadowski.com/wsh/cdo.htm

答案 1 :(得分:0)

是。 Blat或任何其他自包含的SMTP邮件程序。 Blat是一个功能齐全的SMTP客户端,可以从命令行运行

Blat is here