Cách dễ nhất để gửi Email từ dòng lệnh, sử dụng windows 2003 R2


11

Tôi có máy chủ Windows 2003 R2 và tôi muốn gửi email từ dòng lệnh. Máy chủ này không có cấu hình dịch vụ SMTP. Có một lớp lót nào sẽ cho phép tôi gửi email không? Trường hợp sử dụng cụ thể của tôi tại thời điểm này là gửi email khi cảnh báo hiệu suất được kích hoạt, nhưng nói chung nó sẽ hữu ích.

Tôi đang hy vọng một cái gì đó như

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

Cập nhật: Tôi rất thích một giải pháp không liên quan đến việc cài đặt phần mềm của bên thứ 3.


Các tiện ích như blat và sendemail không yêu cầu cài đặt. Cả hai đều là các tập tin exe độc ​​lập.
John Gardeniers

Tôi đoán rằng tôi phải chấp nhận rằng tôi ít nhất phải sao chép một exe (hoặc blat hoặc powershell) vào mỗi máy. Nếu đó là trường hợp, thì blat rất dễ sử dụng. Cảm ơn. Tôi vẫn tự hỏi tại sao MS lại bỏ tính năng này ra, xem xét có bao nhiêu cái khác ít hữu ích hơn mà họ đưa vào bản phân phối tiêu chuẩn.
Peter

Câu trả lời:


15

Tôi sẽ thử blat . Bạn có thể viết một vbscript nhưng không có sẵn để thực thi để gửi thư


biệt phái. Có thể hơi cầu kỳ về việc truyền tham số trực tiếp từ dòng lệnh, nhưng một khi bạn đóng đinh nó, sẽ thực hiện chính xác những gì OP cần.
Chris Thorpe

Tôi đã sử dụng blat trong nhiều năm với thành công lớn. Tuy nhiên, nếu tôi đang viết trong powershell, tôi sẽ chuyển.
uSlackr

Blat có thể hoạt động như gửi đường dẫn thư cho PHP trên Windows không?
SaidbakR

14

Bạn sẽ xem xét powershell chứ không phải cmd.exe? Nếu vậy, gửi thư được tích hợp sẵn trong:

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

Để tạo một lớp lót, hãy lưu phần sau vào tệp tập lệnh 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)

(đảm bảo thay đổi máy chủ smtps thành máy chủ thực sự của bạn)

Sau đó, bạn có thể gọi nó bằng cách sử dụng:

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

1
powershell cũng sẽ phải được cài đặt, nếu không tôi sẽ thích nó hơn vbscript.
Jim B

Câu trả lời tốt đẹp. Chỉ cần một thay đổi nhỏ, các đối số cần phải là dấu ngoặc đơn.
Brain2000

6

Tôi đã sử dụng bmail rất thành công trong quá khứ.

Cách sử dụng (sao chép từ trang 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
Tôi phải thừa nhận, tôi đã hy vọng vào một giải pháp tích hợp, mặc dù câu trả lời của Jim dường như ngụ ý rằng đó là một chút ngây thơ của tôi ...
Peter



Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.