Отправка почты из Batch файла

У нас есть script для резервного копирования файлов. По завершении операции резервного копирования мы хотели бы отправить отчет как уведомление по электронной почте на некоторые из наших адресов электронной почты.

Как это можно сделать?

Ответ 2

Вы также можете использовать Power Shell script:

$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 = "[email protected]"
$objMailMessage.To.Add("[email protected]")
$objMailMessage.Subject = "eMail subject Notification"
$objMailMessage.Body = "Hello world!"

$smtp.send($objMailMessage)

Ответ 3

PowerShell имеет встроенную команду. Так что работайте непосредственно из файла .bat:

powershell -ExecutionPolicy ByPass -Command Send-MailMessage ^
    -SmtpServer server.address.name ^
    -To [email protected] ^
    -From [email protected] ^
    -Subject Testing ^
    -Body 123

NB -ExecutionPolicy ByPass требуется, только если вы не настроили разрешения для запуска PS из CMD

Также для тех, кто хочет вызвать его из powershell, отбросьте все до -Command [включительно], а ` будет вашим escape-символом (не ^)

Ответ 4

bmail. Просто установите EXE и запустите следующую строку:

bmail -s myMailServer -f [email protected] -t [email protected] -a "Production Release Performed"

Ответ 5

Самый простой способ - использовать стороннее приложение, упомянутое другими

Если это не вариант, я написал простую утилиту sendmail, использующую vbscript и CDO, которые я вызывал из пакета script

См. примеры здесь http://www.paulsadowski.com/WSH/cdo.htm

Ответ 6

Мы используем blat, чтобы делать это все время в нашей среде. Я также использую его для подключения к Gmail с Stunnel. Здесь параметры для отправки файла

blat -to [email protected] -server smtp.example.com -f [email protected] -subject "subject" -body "body" -attach c:\temp\file.txt

Или вы можете поместить этот файл в тело

blat c:\temp\file.txt -to [email protected] -server smtp.example.com -f [email protected] -subject "subject"

Ответ 7

Вы также можете использовать sendmail. Я использую его в этом кэше subversion для отправки уведомлений по электронной почте: post-commit hook

Ответ 8

Существует несколько методов для решения этой проблемы.

Мой совет - использовать мощное бесплатное консольное приложение Windows SendEmail.

sendEmail.exe -f [email protected] -o message-file=body.txt -u subject message -t [email protected] -a attachment.zip -s smtp.gmail.com:446 -xu gmail.login -xp gmail.password