Il modo più semplice per inviare un'e-mail dalla riga di comando, utilizzando Windows 2003 R2


11

Ho un server Windows 2003 R2 e desidero inviare un'e-mail dalla riga di comando. Questo server non ha il servizio SMTP configurato. Esiste una linea che mi consente di inviare un'e-mail? Il mio caso d'uso specifico al momento è di inviare un'e-mail quando viene attivato un avviso di prestazione, ma sarebbe utile in generale.

Spero in qualcosa del genere

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

Aggiornamento: Preferirei di gran lunga una soluzione che non prevede l'installazione di software di terze parti.


Utilità come blat e sendemail non richiedono installazione. Sono entrambi file exe indipendenti.
John Gardeniers,

Immagino di dover accettare che devo almeno copiare un exe (blat o powershell) su ogni macchina. In tal caso, blat è molto facile da usare. Grazie. Mi chiedo ancora perché MS abbia lasciato fuori questa funzione, considerando quante altre meno utili hanno inserito nella distribuzione standard.
Peter,

Risposte:


15

Mi piacerebbe provare Blat . È possibile scrivere un vbscript ma non esiste un eseguibile incorporato per inviare posta


secondo distaccato. Può essere un po 'complicato passare i parametri direttamente dalla riga di comando, ma una volta inchiodato, fa esattamente ciò di cui ha bisogno l'OP.
Chris Thorpe,

Uso blat da anni con grande successo. Tuttavia, se stessi scrivendo in PowerShell, cambierei.
uSlackr

Blat è in grado di funzionare come percorso di invio della posta per PHP su Windows?
SaidbakR,

14

Considereresti PowerShell anziché cmd.exe? In tal caso, l'invio della posta è integrato:

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

Per creare una riga, salvare quanto segue in un file di script 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)

(assicurati di cambiare smtpserver in modo che sia il tuo vero)

Quindi puoi chiamarlo usando:

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

1
PowerShell dovrebbe anche essere installato, altrimenti avrei preferito su vbscript.
Jim B,

Bella risposta. Solo una piccola modifica, gli argomenti devono essere virgolette singole.
Brain2000,

6

Ho usato bmail con grande successo in passato.

Utilizzo (copiato dal sito 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
Devo ammetterlo, speravo in una soluzione integrata, anche se la risposta di Jim sembra implicare che fosse un po 'ingenuo da parte mia ...
Peter



Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.