Итак, чтобы отправить с «батника» электронное письмо, нужно качнуть http://sourceforge.net/projects/blat/files/ разархивировать и содержимое папки "…\full" скопировать в папку "C:\Windows\System32", а далее создаем файл send.bat, где пишем
rem Так как мы скопировали туда куда надо файлы архива то ниже строку не меняем
set file_blat=blat.exe
rem Предварительно создаем файл report.txt, где описываем текст сообщения
set file_text=D:\report.txt
rem Предварительно создаем файл log_blat.txt, где будут ложиться логи
set file_log=D:\log_blat.txt
rem SMTP сервер для отправки сообщения, например smtp.mail.ru
set from_server=smtp.inbox.ru
rem Порт SMTP сервера для отправки, например 2525 порт
set from_port=2525
rem Данные пользователя от которого будет отправлено сообщение
set from_mail=login@inbox.ru
rem Данные пользователя от которого отправляется сообщение
set from_name=login@inbox.ru
rem Пароль от почтового ящика пользователя от которого отправляется сообщение
set from_pass=1111
rem Электронный адрес, кому мы отправляем сообщение
set to_mail=login@mail.ru
rem Тема сообщения
set to_subject="Report"
%file_blat% %file_text% -server %from_server%:%from_port% -f %from_mail% -u %from_name% -pw %from_pass% -to %to_mail% -s %to_subject% -log %file_log%
! Хочу обратить внимание на вот эти данные
rem SMTP сервер для отправки сообщения, например, smtp.mail.ru
set from_server=smtp.inbox.ru
rem Порт SMTP сервера для отправки, например 2525 порт
set from_port=2525
Так как почтовики сейчас перевели свои smtp сервера на безопасное соединение, типа SSL, поэтому для успешной отправки по данному соединению нужно еще качнуть вот эту беду https://www.stunnel.org/index.html, которую нужно установить, и при установке можно ставить все по умолчанию, без указания каких то параметров.
Эта штуковина, в нашем случае, дает нам возможность подключаться по безопасному соединению с локального компьютера.
После установки утилиты нужно через cmd.exe перейти в папку, куда была установлена программа, и выполнить
stunnel –install
чтобы установить программу как службу
stunnel –start
чтобы программа запустилась как служба
! Не закрываем командную строку
Потом, открыть и отредактировать файл
C:\Program Files (x86)\stunnel\stunnel.conf
Например, в моем случаи для майл.ру конфиг выглядит так
[mail-pop3]
client = yes
accept = 127.0.0.1:110
connect = pop.mail.ru:995
[mail-smtp]
client = yes
accept = 127.0.0.1:587
connect = smtp.mail.ru:465
сберечь отредактированный файл, а далее в незакрытом ранее терминале выполняем
stunnel –reload
этим самым мы обновляем конфигурационный файл.
Ну, а теперь вернемся к указанию SMTP сервера и порта для отправки почты с командной строки, а именно, заменяем
rem SMTP сервер для отправки сообщения, например smtp.mail.ru
set from_server=smtp.inbox.ru
rem Порт SMTP сервера для отправки, например 2525 порт
set from_port=2525
нами ранее строки в файле send.bat на
rem Теперь SMTP сервер это наш компьютер
set from_server=127.0.0.1
rem Порт, взятый из stunnel.conf
set from_port=587
Вот и все, кидаем этот «батник» в Планировщик заданий, привязав к какому то событию, или вставляем все содержимое из send.bat в свой батник, например, который делает что-то полезное, и будет вам уведомление, что что-то полезное выполнилось, в моем случае вышло, что один «батник» вызывается Планировщиком, который сначала архивирует файловую базу БД, отправляет БД на фтп сервер и потом отправляет мне сообщение о выполнении.
Так же, приведу пример, для общего обозрения отправки электронного письма с помощью Powershell.
Создадим файл name.ps1 куда поместим
$EmailFrom = "Электронный адрес отправителя"
$EmailTo = " Электронный адрес получателя"
$Subject = "Тема сообщения"
$Body = "Текст сообщения"
$SMTPServer = "127.0.0.1 \ так как и выше, нужно использовать для отправки stunnel"
# 587 здесь иммется ввиду порт, см. выше о stunnel
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("Электронный адрес отправителя", "Пароль отправителя");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
Send-MailMessage -From $EmailFrom -To $EmailTo -Subject $Subject -Body $Body -SmtpServer $SMTPServer