Возникла необходимость отправлять данные через почтовый сервис, но чтобы не загружать пользователя ненужными действиями решил прибегнуть к консольной утилите для отправки e-mail под Windows — blat
Т.к. для отправки письма по протоколу SMTP без аутентификации уже не обойтись, то я для себя составил такой формат командной строки и вывел его в пакетный cmd файл:
blat.exe -server server.ru -f e-mail-from@server.ru -u e-mail-from@server.ru -pw pass -to e-mail-to@server.ru -subject SUBJ -body "Текст сообщения" -attach FILE
Немного пояснений:
- -server server.ru — сервер Исходящей почты. Несмотря на то, что мы отправляем из командной строки, но сервер, с которого будет уходить письмо, должен быть!
- -f e-mail-from@server.ru — адрес отправителя. Как и в случае с сервером. Письмо должно быть от кого-то
- -u e-mail-from@server.ru — имя пользователя (логин) для сервера Исходящей почты. Используется для упомянутой выше SMTP аутентификации. В моем случае логин должен состоять из имени пользователя на сервере (то есть имя@сервер), это зависит от сервера. На других серверах может быть просто e-mail-from
- -pw pass — пароль для той же аутентификации.
- -to e-mail-to@server.ru — адрес получателя
- -subject SUBJ — тема письма. Должна быть в кавычках, если есть пробелы!
- -body "Текст сообщения" — текст письма. Должен быть в кавычках, если есть пробелы!
- -attach FILE — собственно то, ради чего это всё я затеял. Путь к файлу и имя файла FILE
Все имена серверов и электронные адреса вымышлены. Совпадения случайны.
Если у кого-нибудь есть дополнения или уточнения по этому вопросу, вэлкам в каменты.

— имя файла, содержимое которого будет использоваться утилитой в качестве основного текста письма.
-tf — ключ, указывающий на файл со списком адресов получателей.
то что надо, но при отправке даже не очень большого файла вылетает со след ошибкой:
«Error: Wait a bit (possible timeout).
Message not accepted by server»
PS правда заметил что иногда письмо все же доходит но правда с большой паузой
@ Вячеслав:
Судя по ошибке, дело не в blat. Если инет у Вас устойчивый, попробуйте отправить такое же письмо на другой почтовый сервер.
Подскажите, пожалуйста, как указать кодировку для корректного отображения кириллицы?
@ Alexander:
Это зависит в какой кодировке вы создаете письмо. Это же командная строка. Можете подсунуть тест сообщения из файла, а уже в этом файле делайте нужную кодировку. Единсвтенный ключ на счет кодировки тела письма что я нашел это -unicode
Все делаю как написано,но ничего не выходит…Не пойму в чем проблема.Письма не доходят(
@ mch87:
когда запускаете в командной строке, программа blat.exe показывает результат работы. Если произошла ошибка, то будет выведен какой-то текст. Можете скопировать его и прислать, посмотрим что можно сделать.
Выдает ошибку:
Error: Wait a bit (possible timeout).
*** Error *** SMTP server error
Error: Not a socket.
Error: Not a socket.