11

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

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

有没有一种简单的方法可以从 .bat 文件或任何其他不需要安装一些额外软件的方式来做到这一点?

Edit:
感谢您的快速回复。“blat” thingie 可能会正常工作,但使用 wscript 我不必使用单独的二进制文件。

第一次编辑并选择答案时,我没有看到 PhiLho 的帖子。我不需要在这里复制代码。

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

4

7 回答 7

11

使用 CDO 可以使用 Wscript:

Dim objMail

Set objMail = CreateObject("CDO.Message")

objMail.From = "Me <Me@Server.com>"
objMail.To = "You <You@AnotherServer.com>"
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

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

于 2008-09-30T09:45:17.310 回答
6

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

于 2008-09-30T09:32:08.357 回答
6

如果服务器发生(我意识到这个问题有多老)安装了 Powershell v2,则 CmdLet Send-MailMessage 将在一行中完成此操作。

Send-MailMessage [-To] <string[]> [-Subject] <string> -From <string> [[-Body] <string>] [[-SmtpServer] <string>] [-Attachments <string[]>] [-Bcc <string[]>] [-BodyAsHtml] [-Cc <string[]>] [-Credential <PSCredential>] [-DeliveryNotficationOption {None | OnSuccess | OnFailure | Delay | Never}] [-Encoding <Encoding>] [-Priority {Normal | Low | High}] [-UseSsl] [<CommonParameters>]
于 2012-11-26T21:59:19.440 回答
1

如果您安装了 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 的独立脚本正常工作。

于 2008-09-30T09:37:09.857 回答
0

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

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

于 2008-09-30T09:20:49.163 回答
0

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

于 2008-09-30T09:44:17.607 回答
0

有没有一种方法可以在不引用外部架构 url 的情况下发送。 http://schemas.microsoft.com/cdo/configuration/

这是非常无用的,因为不能假设所有盒子都可以通过外部 Internet 访问以在本地交换机内部发送邮件。有没有办法将这些网址中的信息保存在本地?

于 2011-03-09T18:42:14.423 回答