отправка почты из пакетного файла - PullRequest
47 голосов
/ 02 апреля 2009

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

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

Ответы [ 8 ]

36 голосов
/ 02 апреля 2009

Блат

blat -to user@example.com -server smtp.example.com -f batch_script@example.com -subject "subject" -body "body"
20 голосов
/ 30 апреля 2009

Вы также можете использовать скрипт 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)
11 голосов
/ 27 июля 2016

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 требуется только в том случае, если вы не настроили разрешения для запуска PS из CMD

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

8 голосов
/ 02 апреля 2009

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

bmail -s myMailServer -f Sender@foo.com -t receiver@foo.com -a "Production Release Performed"
5 голосов
/ 02 апреля 2009

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

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

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

3 голосов
/ 08 июня 2011

Вы также можете использовать sendmail . Я использую его в этом хуке Subversion для отправки уведомлений по электронной почте: хук после фиксации

3 голосов
/ 02 апреля 2009

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

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"
1 голос
/ 03 июля 2014

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

Мой совет - использовать мощное бесплатное консольное приложение 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
...