Der einfachste Weg, eine E-Mail über die Befehlszeile mit Windows 2003 R2 zu senden


11

Ich habe einen Windows 2003 R2-Server und möchte eine E-Mail über die Befehlszeile senden. Auf diesem Server ist der SMTP-Dienst nicht konfiguriert. Gibt es einen Einzeiler, mit dem ich eine E-Mail senden kann? Mein spezieller Anwendungsfall im Moment ist das Senden einer E-Mail, wenn eine Leistungswarnung ausgelöst wird, aber dies wäre im Allgemeinen nützlich.

Ich hoffe auf so etwas

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

Update: Ich würde eine Lösung bevorzugen, bei der keine Software von Drittanbietern installiert wird.


Dienstprogramme wie blat und sendemail müssen nicht installiert werden. Sie sind beide freistehende Exe-Dateien.
John Gardeniers

Ich muss wohl akzeptieren, dass ich mindestens eine Exe (entweder Blat oder Powershell) auf jede Maschine kopieren muss. Wenn dies der Fall ist, ist blat sehr einfach zu bedienen. Vielen Dank. Ich frage mich immer noch, warum MS diese Funktion ausgelassen hat, wenn man bedenkt, wie viele andere weniger nützliche Funktionen in die Standarddistribution aufgenommen wurden.
Peter

Antworten:


15

Ich würde versuchen , blat . Sie könnten ein vbscript schreiben, aber es gibt keine eingebaute ausführbare Datei zum Senden von E-Mails


Seconding Blat. Es kann etwas wählerisch sein, Parameter direkt über die Befehlszeile zu übergeben, aber sobald Sie es geschafft haben, tun Sie genau das, was das OP benötigt.
Chris Thorpe

Ich benutze Blat seit Jahren mit großem Erfolg. Wenn ich jedoch in Powershell schreiben würde, würde ich wechseln.
uSlackr

Kann blat unter Windows als Sendepostpfad für PHP fungieren?
SaidbakR

14

Würden Sie Powershell anstelle von cmd.exe in Betracht ziehen? In diesem Fall ist das Senden von E-Mails integriert:

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

Speichern Sie Folgendes in einer Powershell-Skriptdatei (sendmail.ps1), um einen Einzeiler zu erstellen:

   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)

(Stellen Sie sicher, dass Sie den SMTP-Server so ändern, dass er Ihr echter ist.)

Dann können Sie es aufrufen mit:

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

1
Powershell müsste auch installiert werden, sonst hätte ich es vbscript vorgezogen.
Jim B

Gute Antwort. Nur eine kleine Änderung, die Argumente müssen einfache Anführungszeichen sein.
Brain2000

6

Ich habe bmail in der Vergangenheit mit großem Erfolg verwendet.

Nutzung (von der Website kopiert)

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
Ich muss zugeben, ich hatte auf eine eingebaute Lösung gehofft, obwohl Jims Antwort zu implizieren scheint, dass das ein bisschen naiv von mir war ...
Peter



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

Das einfachste Win-Dienstprogramm, das ich in der Produktionsumgebung gefunden und verwendet habe. Eigenständige ausführbare Datei ohne Installation oder vorgeschriebene Konfiguration. Unterstützt sowohl Nicht-TLS als auch TLS. Und hat einen Debugger, der manchmal hilfreich ist.

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.