从批处理文件发送邮件

时间:2009-04-02 13:09:32

标签: windows command-line batch-file email-client

我们有一个备份文件的脚本。备份操作结束后,我们希望将报告作为电子邮件通知发送到我们的某些电子邮件地址。

怎么可以这样做?

8 个答案:

答案 0 :(得分:36)

Blat

blat -to user@example.com -server smtp.example.com -f batch_script@example.com -subject "subject" -body "body"

答案 1 :(得分:20)

您还可以使用Powershell脚本:

$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)

答案 2 :(得分:11)

PowerShell comes with a built in command for it。所以直接从.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的权限时才需要

对于那些希望在powershell中调用它的人,请放弃-Command [包含]之前的所有内容,`将是您的转义字符(不是^

答案 3 :(得分:8)

bmail。只需安装EXE并运行如下所示的行:

bmail -s myMailServer -f Sender@foo.com -t receiver@foo.com -a "Production Release Performed"

答案 4 :(得分:5)

最简单的方法是使用其他人提到的第三方应用程序

如果那不是一个选项我用vbscript&编写了一个简单的sendmail实用程序。我从批处理脚本调用的CDO

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

答案 5 :(得分:3)

我们使用blat在我们的环境中一直这样做。我也使用它与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"

答案 6 :(得分:3)

您还可以使用 sendmail 。我在这个subversion挂钩中使用它来发送电子邮件通知:post-commit hook

答案 7 :(得分:1)

有多种方法可以解决这个问题。

我的建议是使用功能强大的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