从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实用程序

请参阅http://www.paulsadowski.com/WSH/cdo.htm中的示例;

你也可以使用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