wsh自动发送邮件

前言

wsh中可以通过CDO.Message对象发送邮件,当然你需要在发件箱中设置开启POST/SMTP功能,下面展示下js和vbs的功能代码。

该技术本身很旧,例如不支持TLS/STARTTLS。因此,在使用租赁的邮件服务器环境中,可能需要TLS/STARTTLS,而CDO不能在这样的邮件服务器中使用。

js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function SetMail() {
cdoMsg = new ActiveXObject("CDO.Message") // 创建CDO.Message对象
cdoMsg.From = "[email protected]" // 发件箱
cdoMsg.To = "[email protected]" // 收件箱
namespace = "http://schemas.microsoft.com/cdo/configuration/" // CDO空间命名
cdoMsg.Configuration.Fields.Item(namespace + "sendusing") = 2 // 使用网络发送
cdoMsg.Configuration.Fields.Item(namespace + "smtpserver") = "smtp.163.com" // SMTP服务器
cdoMsg.Configuration.Fields.Item(namespace + "smtpserverport") = 25 // SMTP端口号,默认25
cdoMsg.Configuration.Fields.Item(namespace + "smtpauthenticate") = 1 // 设置Basic模式
cdoMsg.Configuration.Fields.Item(namespace + "sendusername") = "[email protected]" // 发件箱
cdoMsg.Configuration.Fields.Item(namespace + "sendpassword") = "SDFSDFGWERFFSGJ" // 发件箱二次密码
cdoMsg.Configuration.Fields.Item(namespace + "smtpusessl") = true // 使用ssl加密
cdoMsg.Configuration.Fields.Update() // 自动升级
}

function SendMail() {
cdoMsg.Subject = title // 标题
cdoMsg.Textbody = cry // 内容
//cdoMsg.AddAttachment("1.png") //附件
cdoMsg.Send() // 发送
cdoMsg = null //清除
}

js的测试了几天,有时候会出现连接不上服务器无法发送,还是有些不太稳定。

vbs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim Mail,strCfg
Set Mail=CreateObject("CDO.Message")
strCfg="http://schemas.microsoft.com/cdo/configuration/"
Set Args=WScript.Arguments

With Mail
.Configuration(strCfg & "smtpauthenticate")=1
.Configuration(strCfg & "sendusing")=2
.Configuration(strCfg & "smtpserver")="smtp.163.com"
.Configuration(strCfg & "smtpserverport")=25
.Configuration(strCfg & "sendusername")="[email protected]"
.Configuration(strCfg & "sendpassword")="SDFSDFGWERFFSGJ"
.Configuration.Fields.Update
.From="[email protected]"
.To="[email protected]"
.Subject="邮件标题"
.TextBody="邮件内容" '或者.HtmlBody="邮件内容"
'.AddAttachment "1.png" '附件文件路径,可以加多个附件。
.Fields.Update
End With

Mail.Send
Set Mail=Nothing
Set Args=Nothing

vbs我就不说了,没怎么用过,测试是可以用的。代码没啥区别,所以也会有偶尔连接服务器失败,发送不出去的bug。

参考文献

JScriptでメール送信
在WINDOWS中利用VBS直接发送邮件