Как отправить электронное письмо из пакетной команды DOS? - PullRequest
5 голосов
/ 20 июля 2010

У меня есть пакетный файл в DOS, который выполняет некоторую проверку, и мне нужно отключить электронную почту, когда это будет сделано. Я нашел несколько решений на interwebz, но большинство из них являются сторонними или просто открывают новое сообщение в Outlook. Мне нужна команда, чтобы полностью отправить электронное письмо без участия человека.

Мы используем MS Exchange здесь, если это имеет значение.

Спасибо!

Ответы [ 4 ]

3 голосов
/ 02 ноября 2012

Попробуйте

http://sourceforge.net/projects/blat/

Это программа с открытым исходным кодом от SourceForge с большим количеством опций.

3 голосов
/ 20 июля 2010

Предполагается:

  1. Ваш сервер Exchange принимает электронные письма через SMTP через порт 25.
  2. Вы хотите отправлять простые текстовые сообщения электронной почты без вложений.можно использовать telnet (или аналогичный клиент telnet) из командного файла.

Вы можете просто отправить простое электронное письмо через Telnet.Эта ссылка показывает пример того, как это сделать: http://www.yuki -onna.co.uk / email / smtp.html

Если предположение 2 или 3 неверно, вы можете написатьSMTP-клиент командной строки для довольно простой отправки электронных писем на многих языках, а затем вызова их из командного файла.

1 голос
/ 02 августа 2012

Попробуйте http://caspian.dotconf.net/menu/Software/SendEmail/.

Это сторонняя утилита, но ее можно легко вызвать из командного файла.Я делаю.Мне нужно то же, что и вам: отправлять электронную почту в конце пакетного файла без участия человека.

0 голосов
/ 01 ноября 2018

Если у вашей операционной системы есть PowerShell, вы можете сделать это из CMD.EXE как однострочный (эффективно) без , не вызывая блокировку привилегий выполнения скрипта , просто выполнив:

powershell -command $S=New-Object Net.Mail.SmtpClient('your.smtp.server',port);$S.Send('addr-from','addr-to','subject','body')

Объединение строк с; и выполнение в качестве одной команды PS уклоняется от проверки / настройки выполнения сценария. Конечно, существует ограничение на длину одной командной строки в CMD.EXE, поэтому этот точный метод накладывает некоторые ограничения на количество получателей, размер субъекта и тело и т. Д., Но есть Я уверен, что это возможно в другом месте.

Естественно, я использую это гораздо надежнее, заключая его в .BAT, который превращает его в утилиту (идеально подходит для сценариев с низким коэффициентом трения на заблокированных хостах Windows) с проверкой параметров, обработкой ошибок, ведением журнала и т. Д. Офигеть.

Если ваш SMTP-сервер требует аутентификации, вы можете добавить дополнительную необходимую конфигурацию SmtpClient по мере необходимости, что, конечно, дополнительно ограничит длину.

РЕДАКТИРОВАТЬ : вставьте это перед $S.Send, чтобы добавить аутентификацию:

$S.EnableSsl=$true;$S.Credentials=New-Object System.Net.NetworkCredential('usr', 'pass');
...