17 августа 2011 г.

Отправка почты bat файлом с помощью sendmail

Добрый вечер.
Тема сегодняшней вечеринки это отправка почты с bat файла.
И так, поехали!

Для отправки почты мы будем использовать консольную программку sendmail. Она широко используеться в *nix системах, но есть и ее аналог под Windows. Вот он нам и нужен.

Скачать sendmail для windows ~800кб



В архиве мы обнаружим 4 файла, а нужен нам sendmail.ini. Через этот файл можно настроить работу самой утилиты. Открыв файл блокнотом, можно заметить комментарии на русском языке.
Из настроек нужно указать smtp_server=server_name, ну и логи. Остальное можно закомментировать.
Готово?
Далее готовим письмо, которое будем отправлять. Создаем текстовый файл (напр. message.txt), можно прямо в папке с sendmail и пишем туда вот такое:

From: sales@example.com
To: ivan@example.com
Subject: Ваш заказ принят

И тут пишем текст письма

Ну думаю, что не стоит обьяснять что к чему. Просто укажите желаемые адреса. Сохраняем.
Создаем test.bat и делаем в нем запись:
c:\sendmail\sendmail.exe -t < c:\sendmail\message.txt
Где c:\sendmail это путь к папке с утилитой. Сохраняем, запускаем.
Если возникают проблемы, смотрим error.log и debug.log в папке с sendmail.

Вот с помощью таких простых штучек и было написано оповещение админу, при малом количестве свободного места на диске. Bat файл проверяет наличие места, если его мало, то идет отправка письма ему на мыло. Вот такая вот вечеринка у нас вышла.
Спасибо!

15 комментариев:

  1. Всё сделал как вы указали, но комманда c:\sendmail\sendmail.exe -t < c:\sendmail\message.txt не выполняется, sendmail просто виснет:(

    ОтветитьУдалить
  2. нет пусто, просто появляется командная строка с sendmail и всё, курсор мигает.
    конфиг:

    конфигурационный файл sendmail

    [sendmail]

    ; здесь укажите сервер исходящей почты
    smtp_server=smtp.mail.ru


    ; порт smtp, если обычный режим отправки, то порт будет 25
    ; если сервер работает в защищенном режиме (TLS), то порт 465, например почта гугла работает через 465 порт

    smtp_port=25

    ; домен по умолчанию (совсем не обязательно)

    ;default_domain=local

    ; лог ошибок

    error_logfile=error.log

    ; лог отправки, необходим на стадии тестирования. содержит весь текст переговоров с сервером при отправке.

    debug_logfile=debug.log

    ; Если smtp сервер с авторизацией, укажите логин пароль(без кавычек), если без авторизации ничего не пишите

    auth_username=vasya.pupkin@mail.ru
    auth_password=vasya.pupkin

    ; если перед отправкой почты сервер требует авторизацию через POP, заполните эти поля

    pop3_server=pop.mail.ru
    pop3_username=vasya.pupkin@mail.ru
    pop3_password=vasya.pupkin

    ; email адрес, от которого идет отправка, вставится в заголовок "From: "
    ; если отправка писем идет через mail.ru, здесь обязательно должен быть адрес, через который произведена авторизация.

    ;force_sender=vasya.pupkin@mail.ru

    ; хост, который указывается при авторизации в команде ehlo/helo
    ; указывайте домен, через который авторизуетесь

    ;hostname=mail.ru

    ОтветитьУдалить
    Ответы
    1. Посмотрите вот еще обсуждение http://webi.ru/webi_articles/sendmail_ini.html
      У меня тоже не вышло отправить почту через mail.ru, получил ошибку. Но у меня логи пишутся.

      Удалить
    2. ;force_sender=vasya.pupkin@mail.ru

      У Вас это значение за комментировано ";" уберите перед строчкой

      Удалить
  3. А как добавить файл в письмо? Тоесть нужно отправлять файл

    ОтветитьУдалить
    Ответы
    1. Посмотрите информацию по ссылкам:
      http://www.shelldorado.com/articles/mailattachments.html#uuencode
      http://www.shelldorado.com/articles/mailattachments.html#mime

      Похоже параметр -a решает проблему.
      Пример:
      c:\sendmail\sendmail.exe -s "Birthday celebration" -a citymap.jpg all@friends.org \
      < invitation.txt

      Удалить
    2. С вложением не катит

      Удалить
  4. Ребят подскажите какой командой файл прикрепить. остылает норм. а вот файл.. никак((

    ОтветитьУдалить
    Ответы
    1. Нашел одну прикольную прогу.
      http://caspian.dotconf.net/menu/Software/SendEmail/
      Там все есть. И нормальный хелп есть тоже. Attach файлов работает на ура. Если будут вопросы, пиши.
      Вот пример:
      E:\temp\sendEmail-v156>sendEmail.exe -xu mylogin@gmail.com -xp mypass -t to@gmail.com -a E:\temp\sendmail\message.txt -m "mymessage" -f "from@gmail.com"

      Удалить
  5. рабочий конфиг для mail.ru ////

    ; конфигурационный файл sendmail

    [sendmail]

    ; здесь укажите сервер исходящей почты
    smtp_server=smtp.mail.ru


    ; порт smtp, если обычный режим отправки, то порт будет 25
    ; если сервер работает в защищенном режиме (TLS), то порт 465, например почта гугла работает через 465 порт

    smtp_port=25


    ; SMTPS (SSL) support
    ; auto = use SSL for port 465, otherwise try to use TLS
    ; ssl = alway use SSL
    ; tls = always use TLS
    ; none = never try to use SSL

    smtp_ssl=none


    ; домен по умолчанию (совсем не обязательно)

    ;default_domain=local

    ; лог ошибок

    error_logfile=error.log

    ; лог отправки, необходим на стадии тестирования. содержит весь текст переговоров с сервером при отправке.

    debug_logfile=debug.log

    ; Если smtp сервер с авторизацией, укажите логин пароль(без кавычек), если без авторизации ничего не пишите

    auth_username=pilot16@bk.ru
    auth_password=************

    ; если перед отправкой почты сервер требует авторизацию через POP, заполните эти поля

    ;pop3_server=imapi.mail.ru
    ;pop3_username=pilot16@bk.ru
    ;pop3_password=************

    ; email адрес, от которого идет отправка, вставится в заголовок "From: "
    ; если отправка писем идет через mail.ru, здесь обязательно должен быть адрес, через который произведена авторизация.

    force_sender=pilot16@bk.ru

    ; хост, который указывается при авторизации в команде ehlo/helo
    ; указывайте домен, через который авторизуетесь

    hostname=mail.ru

    ОтветитьУдалить
  6. Добрый день! С наступающим новым 2019 годом! Актуальность статья не потеряла, однако mail.ru и yandex.ru изменили протоколы.Хотелось бы здесь увидеть пример для отправки на ящики mail, ysndex по SSL протоколу.

    ОтветитьУдалить
    Ответы
    1. Вот мой рабочий конфиг под Gmail. С яшей и майл.ру должно быть аналогично.
      https://pastebin.com/0WbjFpfu

      Удалить
  7. Добрый день.
    Есть ли возможность прикрепить файл через message.txt или BAT файл ?

    ОтветитьУдалить
  8. Экзотические растения семена адениума и другие комнатные цветы.

    вечер

    ОтветитьУдалить