отправка почты из пакетного файла

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

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


person user73628    schedule 02.04.2009    source источник
comment
Я смущен. Он спрашивает, как отправить электронное письмо из командного файла. Как это не вопрос программирования?   -  person RossFabricant    schedule 02.04.2009
comment
проклятая партия, а не бас, забудь мой комментарий   -  person chburd    schedule 02.04.2009
comment
Как это оскорбление? Объяснять!   -  person Dirk Vollmar    schedule 02.04.2009
comment
Почему бы не использовать планировщик задач? Афаик может такое сделать.   -  person Joey    schedule 02.04.2009
comment
@Johannes: Вы должны написать это в качестве ответа, это заслуживает некоторого голоса.   -  person Dirk Vollmar    schedule 02.04.2009
comment
@divo: Я бы предположил, что это было помечено как оскорбительное, прежде чем вы удалили часть plzsendtehcodez.   -  person Jon B    schedule 02.04.2009


Ответы (6)


Блат:

blat -to [email protected] -server smtp.example.com -f [email protected] -subject "subject" -body "body"
person Colin Pickard    schedule 02.04.2009
comment
если вы хотите отправлять электронные письма на несколько адресов, используйте команду типа blat -to user1 @ example.com, user2 @ example.com - person Sam B; 10.08.2020

Вы также можете использовать сценарий 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)
person Philibert Perusse    schedule 29.04.2009
comment
проголосовали за. Но если вы не хотите создавать .ps1, , вы можете вызывать его прямо из партии - person Hashbrown; 27.07.2016
comment
Вопрос касался BATCH, а не PowerShell. Poweshell поддерживает только W7 и новее - person Denys Vitali; 02.11.2016

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-символом (не ^)

person Hashbrown    schedule 27.07.2016
comment
В качестве побочного примечания не забывайте, что когда вы запускаете что-то вроде powershell -Command Send-MailMessage..., его нужно запускать с окружающими двойными кавычками и одинарными кавычками, такими как powershell -Command "Send-MailMessage -SmtpServer 'server.address.name' -To '[email protected]' -From '[email protected]' -Subject 'This is a test' -Body 'BLAH BLAH BLAH'" - person Arvo Bowen; 21.03.2018
comment
у меня все вышеперечисленное отлично сработало, а ваш без них не работает? Это потому, что вы используете пробелы в теме и требуете одинарные кавычки? - person Hashbrown; 23.03.2018
comment
Возможно, но я не мог заставить его работать без двойных кавычек для меня. Я наткнулся на предложения других, испытывающих ту же проблему. Подумал, что поделюсь, если кто-то еще ударится об ту же стену. Тем не менее, обычно все мои темы и тела в моих электронных письмах содержат пробелы. ;) - Замечание, может быть, это связано с тем, что моя команда находится в одной строке, в отличие от вашей, это многострочная? - person Arvo Bowen; 23.03.2018

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

bmail -s myMailServer -f [email protected] -t [email protected] -a "Production Release Performed"
person RossFabricant    schedule 02.04.2009
comment
Здесь я не могу установить bamil в целях безопасности. пожалуйста, скажите мне, есть ли способ решить мою проблему. - person user73628; 02.04.2009
comment
Вы пробовали использовать другие почтовые клиенты с командной строкой? Поиск в Google содержит довольно много бесплатных инструментов. - person Dirk Vollmar; 02.04.2009

Для этого мы постоянно используем 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"
person Keng    schedule 02.04.2009

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

Я советую использовать мощное бесплатное консольное приложение для 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
person Expertsblog.info    schedule 03.07.2014