我尝试创建一个VBS脚本,当文件夹达到特定文件大小时发送警报电子邮件,但我似乎无法发送电子邮件。我收到此错误 - "传输无法连接到服务器"。有没有办法发送没有SMTP服务器的电子邮件或?
我出于个人原因改变了我的pswrd / email。
Const dirPath = "C:\Users\tim.mcgee\Desktop\Offsite Drive"
Const alertedPath = "prevRun.txt"
alertOn = 3 * 2 ^ 29 '1.5GB
resetOn = alertOn * .95 'Approx 77MB
Const emailTo = "**"
Const emailFrom = "**"
Const emailSbjct = "Offsite Drive Full"
Const emailMsg = "The offsite drive has reached maximum capacity."
Const SMTPServer = "Smtp.gmail.com"
Const SMTPPort = 25
emailUsr = emailFrom
Const emailPsswd = "**"
Const emailSSL = False
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(alertedPath) Then
alerted = CBool(Trim(fso.OpenTextFile(alertedPath).ReadLine))
Else
alerted = False
End If
dirSize = fso.GetFolder(dirPath).Size
If alerted Then 'Email previously sent
alerted = dirSize > resetOn
ElseIf dirSize >= alertOn Then
SendEmail
alerted = True
End If
fso.OpenTextFile(alertedPath, 2, True).WriteLine CInt(alerted)
WScript.Quit 0
Sub SendEmail
Const cfg = "http://schemas.microsoft.com/cdo/configuration/"
With CreateObject("CDO.Message")
.From = emailFrom
.To = emailTo
.Subject = emailSbjct
.TextBody = emailMsg
With .Configuration.Fields
.Item(cfg & "sendusing") = 2
.Item(cfg & "smtpserver") = SMTPServer
.Item(cfg & "smtpserverport") = SMTPPort
.Item(cfg & "smtpconnectiontimeout") = 60
.Item(cfg & "smtpauthenticate") = 1
.Item(cfg & "smtpusessl") = emailSSL
.Item(cfg & "sendusername") = emailUsr
.Item(cfg & "sendpassword") = emailPsswd
.Update
End With
.Send
End With
End Sub
答案 0 :(得分:0)
错误消息表示您的脚本无法连接到端口25上的smtp.gmail.com
。现在,大多数ISP不允许端口25上的出站邮件作为垃圾邮件防范措施。您需要通过其中一个邮件中继发送,或者远程服务器必须接受其他端口上的邮件,通常是587(提交)或465(SMTPS,已弃用)。
由于您已拥有凭据,因此您应该将SMTPPort
的值更改为587或465. Gmail应接受其中任何一个端口上的经过身份验证的邮件。
至于关于在没有SMTP服务器的情况下发送邮件的问题,在使用CDO时,您基本上有3个发送邮件的选项。您可以通过sendusing
配置字段选择要使用的那个:
cdoSendUsingPickup
(数值1
):允许您发送邮件而无需指定SMTP服务器,但您必须在运行脚本的主机上安装SMTP服务器。使用此方法,邮件将通过提取文件夹提交到本地SMTP服务器。不需要身份验证,但必须将SMTP服务器配置为正确路由邮件。
通常,当您使用本地SMTP服务器进行设置时,这些服务器配置为将所有拾取的邮件发送到中央邮件网关/集线器,以处理进一步的传送。
cdoSendUsingPort
(数值2
,默认值):允许您通过SMTP协议将邮件发送到任何SMTP服务器。还允许您提供显式凭据。使用此方法,您必须指定要将邮件发送到的SMTP服务器。
cdoSendUsingExchange
(数值3
):允许您通过域的Exchange服务器发送邮件。显然需要域和Exchange服务器。