La forma más fácil de enviar un correo electrónico desde la línea de comandos, utilizando Windows 2003 R2


11

Tengo un servidor Windows 2003 R2 y quiero enviar un correo electrónico desde la línea de comandos. Este servidor no tiene configurado el servicio SMTP. ¿Hay una línea que me permita enviar un correo electrónico? Mi caso de uso específico en este momento es enviar un correo electrónico cuando se activa una alerta de rendimiento, pero sería útil en general.

Espero algo como

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

Actualización: preferiría una solución que no implique la instalación de software de terceros.


Las utilidades como blat y sendemail no requieren instalación. Ambos son archivos exe independientes.
John Gardeniers

Supongo que tengo que aceptar que necesito al menos copiar un exe (ya sea blat o powershell) en cada máquina. Si ese es el caso, entonces blat es muy fácil de usar. Gracias. Todavía me pregunto por qué MS omitió esta característica, considerando cuántos otros menos útiles pusieron en la distribución estándar.
Peter

Respuestas:


15

Intentaría blat . Puede escribir un vbscript pero no hay un ejecutable integrado para enviar correo


secundando blat. Puede ser un poco exigente al pasar parámetros directamente desde la línea de comando, pero una vez que lo logra, hace exactamente lo que necesita el OP.
Chris Thorpe

He estado usando blat durante años con gran éxito. Sin embargo, si estuviera escribiendo en PowerShell, cambiaría.
uSlackr

¿Blat puede funcionar como ruta de envío de correo para PHP en Windows?
SaidbakR

14

¿Consideraría powershell en lugar de cmd.exe? Si es así, el envío de correo está integrado:

$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 hacer un forro único, guarde lo siguiente en un archivo de script de 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)

(asegúrese de cambiar el smtpserver para que sea el real)

Entonces puedes llamarlo usando:

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

1
Powershell también tendría que estar instalado, de lo contrario lo hubiera preferido sobre vbscript.
Jim B

Buena respuesta. Solo un cambio menor, los argumentos deben ser comillas simples.
Brain2000

6

He usado bmail con gran éxito en el pasado.

Uso (copiado del sitio web)

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
Tengo que admitir, que estaba esperando una construida en la solución, aunque la respuesta de Jim parece dar a entender que era un poco ingenuo de mi ...
Peter



Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.