从Windows脚本发送邮件

时间:2020-03-06 14:54:53  来源:igfitidea点击:

我想从Windows Server 2003 Standard Edition上的脚本发送邮件。我认为服务器设置几乎是开箱即用的。

邮件服务器是一台Exchange服务器,当我们位于内部网络上时,可以使用普通的旧SMTP。我已经使用Perl在机器上完成了此操作,但是不幸的是Perl在服务器上不可用。

是否有一种简单的方法可以从.bat文件执行此操作,也可以通过任何其他不需要安装其他软件的方法来执行此操作?

编辑
感谢快速答复。 " blat"的东西可以正常工作,但是使用wscript,我不必使用单独的二进制文件。

我第一次编辑并选择答案时没有看到PhiLho的帖子。无需我在此处重复代码。

只需将脚本保存到一个文件中,例如sendmail.vbs,然后从命令提示符处调用它,如下所示:
wscript sendmail.vbs

解决方案

我认为我们必须安装一些可以从WScript调用的ActiveX或者其他组件,例如:
http://www.activexperts.com/ActivEmail/
和:
http://www.emailarchitect.net/webapp/SMTPCOM/developers/scripting.asp

否则,我们将必须自己全部在WScript中编写整个SMTP逻辑(如果可能,不确定)。

我不知道在.bat文件旁边删除二进制文件是否算作安装软件,但是,如果没有,则可以使用blat来执行此操作。

如果我们安装了Outlook / Exchange,则应该能够使用CDONT,只需创建一个mail.vbs文件,然后像这样在批处理文件中调用它即可(有趣的是它们位于同一目录中)

wscript mail.vbs

VBScript代码签出

http://support.microsoft.com/kb/197920

http://www.w3schools.com/asp/asp_send_email.asp

忘记了两个链接都在谈论ASP的事实,它可以作为没有iis的独立脚本正常工作。

将CDONTS与Windows脚本宿主(WScript)一起使用

使用CDO,可以使用Wscript:

Dim objMail

Set objMail = CreateObject("CDO.Message")

objMail.From = "Me <[email protected]>"
objMail.To = "You <[email protected]>"
objMail.Subject = "That's a mail"
objMail.Textbody = "Hello World"
objMail.AddAttachment "C:\someFile.ext"

---8<----- You don't need this part if you have an active Outlook [Express] account -----
' Use an SMTP server
objMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

' Name or IP of Remote SMTP Server
objMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
    "smtp.server.com"

' Server port (typically 25)
objMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

objMail.Configuration.Fields.Update
----- End of SMTP usage ----->8---

objMail.Send

Set objMail=Nothing
Wscript.Quit

更新:在此处找到更多信息:VBScript使用CDO发送电子邮件
默认情况下,它似乎使用Outlook [Express],因此它在我的计算机上不起作用,但是我们可以使用给定的SMTP服务器,这对我来说很好用。