Самый простой способ отправить электронное письмо из командной строки, используя Windows 2003 R2


11

У меня есть сервер Windows 2003 R2, и я хочу отправить письмо из командной строки. На этом сервере не настроена служба SMTP. Есть ли один лайнер, который позволит мне отправить электронное письмо? Мой конкретный вариант использования в данный момент - это отправка электронного письма при срабатывании предупреждения о производительности, но в целом это было бы полезно.

Я надеюсь на что-то вроде

foomail -t peter@example.org -f blah@example.org -m "Alert!  the sky is falling"

Обновление: я бы предпочел решение, не включающее установку стороннего программного обеспечения.


Такие утилиты, как blat и sendemail, не требуют установки. Они оба отдельно стоящие exe-файлы.
Джон Гарденье

Я предполагаю, что должен признать, что мне нужно, по крайней мере, скопировать исполняемый файл (blat или powershell) на каждую машину. Если это так, то blat очень прост в использовании. Благодарю. Я до сих пор удивляюсь, почему MS пропустил эту функцию, учитывая, сколько других менее полезных они добавили в стандартный дистрибутив.
Питер

Ответы:


15

Я бы попробовал блат . Вы могли бы написать VBScript, но нет встроенного исполняемого файла для отправки почты


второй блат. Может быть немного придирчиво к передаче параметров непосредственно из командной строки, но как только вы это сделаете, вы получите именно то, что нужно OP.
Крис Торп

Я использую blat годами с большим успехом. Однако, если бы я писал в PowerShell, я бы переключился.
uSlackr

Способен ли blat работать как путь отправки почты для PHP в Windows?
SaidbakR

14

Вы бы рассмотрели powershell, а не cmd.exe? Если это так, отправка почты встроена в:

$SmtpClient = New-Object System.Net.Mail.SmtpClient
$SmtpServer = "your.mail.host.com"
$SmtpClient.host = $SmtpServer 

$From = "Me <User@example.com>"
$To = User2@example.com
$Title = "Subject"
$Body = "Body Text" 
$SmtpClient.Send($From,$To,$Title,$Body)  

Чтобы сделать один вкладыш, сохраните следующее в файл сценария powershell (sendmail.ps1):

   param(  
        [string] $From = "from@example.com",
        [string] $To = "to@example.com",
        [string] $Title = "title",
        [string] $Body = "body"
    )
    $SmtpClient = New-Object System.Net.Mail.SmtpClient
    $SmtpServer = "your.mail.host.com"
    $SmtpClient.host = $SmtpServer 
    $SmtpClient.Send($From,$To,$Title,$Body)

(убедитесь, что смените smtpserver на ваш настоящий)

Тогда вы можете позвонить, используя:

powershell.exe c:\path\to\sendmail.ps1 "from@example.com" "to@example.com" "title" "body"

1
PowerShell также должен быть установлен, в противном случае я бы предпочел его над VBScript.
Джим Б

Хороший ответ. Только одно незначительное изменение, аргументы должны быть в одинарных кавычках.
Brain2000

6

Я использовал bmail с большим успехом в прошлом.

Использование (скопировано с сайта)

C:\>bmail /?

    Command Line SMTP Emailer V1.07
    Copyright(C) 2002-2004 Craig.Peacock@beyondlogic.org
    Usage: bmail [options]
            -s    SMTP Server Name
            -p    SMTP Port Number (optional, defaults to 25)
            -t    To: Address
            -f    From: Address
            -b    Text Body of Message (optional)
            -h    Generate Headers
            -a    Subject (optional)
            -m    Filename (optional) Use file as Body of Message
                -c    Prefix above file with CR/LF to separate body from header
                -d    Debug (Show all mail server communications)

1
Я должен признать, я надеялся на встроенное решение, хотя ответ Джима, кажется, подразумевает, что это было немного наивно с моей стороны ...
Питер



0
sendEmail -f %from_address% -t %to_address% -u "Subject Line" -m "Message" -s %smtp_server%

Простейшая утилита Win, которую я нашел и использую в производственной среде. Автономный исполняемый файл, без установки или обязательной конфигурации. Поддерживает не-TLS и TLS. И имеет отладчик, который иногда полезен.

http://caspian.dotconf.net/menu/Software/SendEmail/#download

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.