A maneira mais fácil de enviar um email a partir da linha de comando, usando o Windows 2003 R2


11

Eu tenho um servidor Windows 2003 R2 e quero enviar um email a partir da linha de comando. Este servidor não possui o serviço SMTP configurado. Existe um liner que me permita enviar um email? Meu caso de uso específico no momento é enviar um email quando um alerta de desempenho for acionado, mas seria útil em geral.

Eu estou esperando por algo como

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

Atualização: Eu preferiria uma solução que não envolva a instalação de software de terceiros.


Utilitários como blat e sendemail não requerem instalação. Ambos são arquivos exe independentes.
John Gardeniers

Eu acho que tenho que aceitar que eu preciso, pelo menos, copiar um exe (blat ou powershell) para cada máquina. Se for esse o caso, então o blat é muito fácil de usar. Obrigado. Ainda me pergunto por que a MS deixou esse recurso de fora, considerando quantos outros menos úteis eles colocaram na distribuição padrão.
Peter Peter

Respostas:


15

Eu tentaria tagarelar . Você pode escrever um vbscript, mas não há executável embutido para enviar email


seconding blat. Pode ser um pouco exigente a passagem de parâmetros diretamente da linha de comando, mas depois que você o define, faz exatamente o que o OP precisa.
Chris Thorpe

Eu uso blat há anos com grande sucesso. No entanto, se eu estivesse escrevendo em PowerShell, mudaria.
uSlackr

O blat é capaz de funcionar como caminho de envio de email para PHP no Windows?
precisa saber é o seguinte

14

Você consideraria o powershell em vez de cmd.exe? Nesse caso, o envio de email é incorporado:

$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)  

Para criar um liner, salve o seguinte em um arquivo de script do 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)

(certifique-se de alterar o servidor smtps para ser o seu real)

Então você pode chamá-lo usando:

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

1
o powershell também teria que ser instalado, caso contrário, eu o teria preferido em vez do vbscript.
Jim B

Boa resposta. Apenas uma pequena alteração, os argumentos precisam ser aspas simples.
precisa saber é o seguinte

6

Eu usei o bmail com grande sucesso no passado.

Uso (copiado do site)

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
Devo admitir que esperava uma solução embutida, embora a resposta de Jim pareça implicar que isso foi um pouco ingênuo de minha parte ... #
Peter Peter



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

O utilitário Win mais simples que encontrei e uso no ambiente de produção. Executável independente, sem instalação ou configuração obrigatória. Oferece suporte a não TLS e TLS. E possui um depurador, que às vezes é útil.

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.