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.