Windows 2003 R2 kullanarak komut satırından E-posta göndermenin en kolay yolu


11

Windows 2003 R2 sunucum var ve komut satırından bir e-posta göndermek istiyorum. Bu sunucunun yapılandırılmış SMTP hizmeti yok. Bir e-posta göndermeme izin verecek bir astar var mı? Şu anda özel kullanım durumum, bir performans uyarısı tetiklendiğinde bir e-posta göndermektir, ancak genel olarak yararlı olacaktır.

Gibi bir şey umuyorum

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

Güncelleme: 3. taraf yazılım yüklemeyi içermeyen bir çözümü tercih ederim.


Blat ve sendemail gibi yardımcı programların yüklenmesi gerekmez. İkisi de bağımsız exe dosyaları.
John Gardeniers

Sanırım en azından her makineye bir exe (blat veya powershell) kopyalamam gerektiğini kabul etmeliyim. Bu durumda, blat'ın kullanımı çok kolaydır. Teşekkürler. Yine de, MS'nin standart dağıtımda kaç tane daha az kullanışlı olanı düşünerek neden bu özelliği bıraktığını merak ediyorum.
Peter

Yanıtlar:


15

Blat'ı denerdim . Bir vbscript yazabilirsiniz ancak posta göndermek için yerleşik bir yürütülebilir dosya yoktur


blat ikilemi. Parametreleri doğrudan komut satırından geçirme konusunda biraz seçici olabilir, ancak bir kez çivilediğinizde, OP'nin tam olarak ihtiyaç duyduğu şeyi yapar.
Chris Thorpe

Blat'ı yıllardır büyük bir başarı ile kullanıyorum. Ancak, powershell'de yazsaydım, geçiş yapardım.
uSlackr

Blat, Windows'ta PHP için posta gönderme yolu olarak çalışabilir mi?
SaidbakR

14

Cmd.exe yerine powershell'i düşünür müsünüz? Öyleyse, posta gönderme yerleşiktir:

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

Bir astar oluşturmak için aşağıdakileri bir powershell komut dosyasına (sendmail.ps1) kaydedin:

   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)

(smtpserver'ı gerçek sunucunuz olarak değiştirdiğinizden emin olun)

Ardından şunu kullanarak arayabilirsiniz:

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

1
powershell de yüklü olması gerekirdi, aksi takdirde vbscript yerine tercih ederdim.
Jim B

Güzel cevap. Sadece küçük bir değişiklik, argümanların tek tırnak olması gerekir.
Brain2000

6

Ben geçmişte büyük bir başarı ile bmail kullandım .

Kullanım (web sitesinden kopyalandı)

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
İtiraf etmeliyim ki, yerleşik bir çözüm umuyordum, ancak Jim'in cevabı bana biraz naif olduğunu ima ediyor gibi görünüyor ...
Peter



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

Üretim ortamında bulduğum ve kullandığım en basit Win yardımcı programı. Kurulum veya zorunlu yapılandırma olmadan bağımsız çalıştırılabilir. TLS olmayan ve TLS'yi destekler. Ve bazen yardımcı olan bir hata ayıklayıcı vardır.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.