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.