【发布时间】:2011-06-11 14:24:55
【问题描述】:
如何编写 Windows 批处理脚本来发送邮件?举个例子
【问题讨论】:
标签: email batch-file windows-server-2008
如何编写 Windows 批处理脚本来发送邮件?举个例子
【问题讨论】:
标签: email batch-file windows-server-2008
您需要使用第三方工具,例如 blat (http://www.blat.net/)。然后在您的批处理文件中,您将有如下一行:
blat -to foo@bar.com -f bar@foo.com -subject "电子邮件主题" -body "电子邮件正文" -server mysmtphost
【讨论】:
我建议下载并安装一个命令行电子邮件程序。我能看到的最好的免费软件是:
http://www.beyondlogic.org/solutions/cmdlinemail/cmdlinemail.htm
从那里,将下载的 .exe 保存到硬盘上的一个合适位置(可能在 c:/program files/bmail 中)并将该目录添加到您的 PATH(有关说明,请参阅http://www.brightrev.com/how-to/windows/35-add-a-utilities-directory-to-your-pc.html?start=1)。
从那时起,您可以设置一个小批量脚本,如下所示:
@echo off
bmail -s smtp.example.com -p 465 -t toemail@example.com -f fromemail@example.com -h -a "INSERT SUBJECT HERE" -b "INSERT MESSAGE TEXT HERE"
然后要向该电子邮件地址发送电子邮件,只需运行批处理文件即可。
如果需要,您可以将其更改为接受参数,以便自定义消息:http://www.robvanderwoude.com/parameters.php。
重要提示:如果 SMTP 服务器需要身份验证,我很确定 bmail 将无法工作,因此您需要找到一个可以使用的。也许在服务器上设置一个没有用户名和密码,只能从 localhost 访问?
【讨论】:
您可以启用已安装的 Windows SMTP 服务器。 然后运行一个 power shell 脚本:
$subject = $args[0]
# Create from/to addresses
$from = New-Object system.net.mail.MailAddress "remy@supertext.ch"
$to = New-Object system.net.mail.MailAddress "remy.blaettler@gmail.com"
# Create Message
$message = new-object system.net.mail.MailMessage $from, $to
$message.Subject = $subject
$message.Body = @"
Warning message from the Supertext Server
"@
# Set SMTP Server and create SMTP Client
$server = "209.162.190.6"
$client = new-object system.net.mail.smtpclient $server
# SO do it
"Sending an e-mail message to {0} by using SMTP host {1} port {2}." -f $to.ToString(), $client.Host, $client.Port
try {
$client.Send($message)
}
catch {
"Exception caught in CreateTestMessage: {0}" -f $Error.ToString()
}
【讨论】: