从batch file发送邮件
我们有一个脚本来备份文件。 备份操作结束后,我们希望以电子邮件通知方式向我们的某些电子邮件地址发送报告。
这怎么可能呢?
Blat :
blat -to user@example.com -server smtp.example.com -f batch_script@example.com -subject "subject" -body "body"
您还可以使用Power Shell脚本:
$smtp = new-object Net.Mail.SmtpClient("mail.example.com") if( $Env:SmtpUseCredentials -eq "true" ) { $credentials = new-object Net.NetworkCredential("username","password") $smtp.Credentials = $credentials } $objMailMessage = New-Object System.Net.Mail.MailMessage $objMailMessage.From = "script@mycompany.com" $objMailMessage.To.Add("you@yourcompany.com") $objMailMessage.Subject = "eMail subject Notification" $objMailMessage.Body = "Hello world!" $smtp.send($objMailMessage)
bmail 。 只需安装EXE并像这样运行一行:
bmail -s myMailServer -f Sender@foo.com -t receiver@foo.com -a "Production Release Performed"
PowerShell为它提供了一个内置的命令 。 所以直接从.bat
文件运行:
powershell -ExecutionPolicy ByPass -Command Send-MailMessage ^ -SmtpServer server.address.name ^ -To someone@what.ever ^ -From noreply@possibly.fake ^ -Subject Testing ^ -Body 123
NB -ExecutionPolicy ByPass
只有在您尚未设置从CMD运行PS的权限时才需要
另外对于那些想从-Command
调用它,放下一切之前-Command
[含],和`
将是你的转义字符(不是^
)
最简单的方法是使用其他人提到的第三方应用程序
如果这不是一个选项,我使用从批处理脚本中调用的vbscript&CDO编写了一个简单的sendmail实用程序
你也可以使用sendmail 。 我在这个Subversion挂钩中使用它来发送电子邮件通知: 后提交挂钩
我们一直在我们的环境中使用白色来做这件事。 我也使用它与Stunnel连接到Gmail。 这里是发送文件的参数
blat -to user@example.com -server smtp.example.com -f batch_script@example.com -subject "subject" -body "body" -attach c:\temp\file.txt
或者你可以把这个文件放在主体中
blat c:\temp\file.txt -to user@example.com -server smtp.example.com -f batch_script@example.com -subject "subject"
有多种方法来处理这个问题。
我的build议是使用强大的Windows免费软件控制台应用程序SendEmail 。
sendEmail.exe -f sender.from@mail.com -o message-file=body.txt -u subject message -t to.email.address@mail.com -a attachment.zip -s smtp.gmail.com:446 -xu gmail.login -xp gmail.password