Email 使用VBS调用文本文件以填充电子邮件中的字段
我正在创建一个脚本,放置在服务器上运行,无需用户交互,当满足某些条件时将发送电子邮件。我已经运行了criteria脚本,但我希望使脚本易于为每个服务器部署和修改 我试图让脚本调用文本文件来填充电子邮件中的“收件人”字段。文本文件将每行放置一个电子邮件地址(我在地址的末尾放了一个分号,因为我知道多个TO地址用分号分隔) 我在调用脚本时尝试了许多不同的变体,要么在“收件人”行上出现错误,要么在脚本中出现错误,结果没有定义收件人。以下是脚本:Email 使用VBS调用文本文件以填充电子邮件中的字段,email,vbscript,Email,Vbscript,我正在创建一个脚本,放置在服务器上运行,无需用户交互,当满足某些条件时将发送电子邮件。我已经运行了criteria脚本,但我希望使脚本易于为每个服务器部署和修改 我试图让脚本调用文本文件来填充电子邮件中的“收件人”字段。文本文件将每行放置一个电子邮件地址(我在地址的末尾放了一个分号,因为我知道多个TO地址用分号分隔) 我在调用脚本时尝试了许多不同的变体,要么在“收件人”行上出现错误,要么在脚本中出现错误,结果没有定义收件人。以下是脚本: `Set objFSO = CreateObject("S
`Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objDictionary = CreateObject("Scripting.Dictionary")
Set objFileEmailAddresses = objFSO.OpenTextFile("EmailAddresses.txt", 1)
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set wshShell = WScript.CreateObject("WScript.Shell")
strComputerName = wshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")
ServicesArray = Split (objFileEmailAddresses.ReadAll, vbNewLine)
For Each strService In ServicesArray
objDictionary.Add strService, strService
Next
Set objEmail = CreateObject("CDO.Message")
objEmail.From = "email@server.com"
objEmail.To = objFileEmailAddresses
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp address"
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Fields.Item("urn:schemas:mailheader:X-MSMail-Priority") = "High"
objEmail.Fields.Item("urn:schemas:mailheader:X-Priority") = 2
objEmail.Fields.Item("urn:schemas:httpmail:importance") = 2
objEmail.Fields.Update
objEmail.Subject = "Primary Server " & Ucase(strComputerName) & " is Rebooting Now"
objEmail.TextBody ="The primary server " & Ucase(strComputerName) & " is scheduled to reboot at this time. The server will be offline in less than one minute. .... "
objEmail.Send
objFileEmailAddresses.Close()`
objEmail
对象的To
字段应该是包含一个或多个电子邮件地址的字符串。您正在为其分配TextStream对象(objFileEmailAddresses
)
你说你的电子邮件地址已经以分号结尾了?请尝试以下方法:
' Open the text file containing all of the e-mail addresses...
Set objFileEmailAddresses = objFSO.OpenTextFile("EmailAddresses.txt", 1)
' Read the entire file. Replace newlines with nothing to get a single
' string of semicolon-separated e-mail addresses...
strAddresses = Replace(objFileEmailAddresses.ReadAll, vbCrLf, "")
' Assign the string to the e-mail object...
objEmail.To = strAddresses
您可以去掉
字典
对象。除非您担心可能多次列出相同的电子邮件地址,否则我们可能需要使用一个。没问题。很高兴听到这个消息!