2009-04-02 3 views
43

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

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

+0

plzsendz tehcodz? –

+2

Я смущен. Он спрашивает, как отправлять электронную почту из пакетного файла. Как это не вопрос программирования? – RossFabricant

+0

проклят это «партия», а не «bash», забудьте мой комментарий – chburd

ответ

8

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

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

Здесь я не могу установить bamil в соответствии с целью обеспечения безопасности. PLZ сказать мне есть ли какой-либо альтернативный способ решить мою проблему. – user73628

+0

Вы пробовали с другими почтовыми клиентами из командной строки? Поиск в Google содержит довольно много доступных инструментов. –

6

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

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

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

2

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

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" 
20

Вы также можете использовать скрипт 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 = "[email protected]" 
$objMailMessage.To.Add("[email protected]") 
$objMailMessage.Subject = "eMail subject Notification" 
$objMailMessage.Body = "Hello world!" 

$smtp.send($objMailMessage) 
+1

. Но если вы не хотите создавать '.ps1', [вы можете называть это прямо из партии] (http://stackoverflow.com/a/38604180/2518317) – Hashbrown

+0

Вопрос был о BATCH, а не в powershell. Poweshell поддерживает только W7 и более поздние версии –

3

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

1

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

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

PowerShell comes with a built in command for it. Так работает непосредственно с .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 от КМД

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

Смежные вопросы