2009-04-02 32 views
43

Chúng tôi có tập lệnh để sao lưu tệp. Sau khi hoạt động sao lưu kết thúc, chúng tôi muốn gửi báo cáo dưới dạng thông báo qua email tới một số địa chỉ email của chúng tôi.gửi thư từ tệp Batch

Làm cách nào để thực hiện điều này?

+0

plzsendz tehcodz? –

+2

Tôi đang bối rối. Anh ấy hỏi làm thế nào để gửi email từ một tập tin thực thi. Làm thế nào mà không phải là một câu hỏi lập trình? – RossFabricant

+0

damned nó 'lô và không bash, quên bình luận của tôi – chburd

Trả lời

8

bmail. Chỉ cần cài đặt EXE và chạy một dòng như thế này:

bmail -s myMailServer -f [email protected] -t [email protected] -a "Production Release Performed" 
+0

Ở đây tôi không thể cài đặt bamil theo mục đích bảo mật. plz cho tôi biết là có cách nào để giải quyết vấn đề của tôi. – user73628

+0

Bạn đã thử với các ứng dụng email dòng lệnh khác chưa? Tìm kiếm của Google liệt kê khá nhiều công cụ có sẵn miễn phí. –

6

Cách dễ nhất là sử dụng một ứng dụng của bên thứ ba như đã đề cập bởi những người khác

Nếu đó không phải là một tùy chọn Tôi đã viết một tiện ích sendmail đơn giản bằng cách sử dụng vbscript & CDO mà tôi gọi từ một tập lệnh batch

Xem các ví dụ tại đây http://www.paulsadowski.com/WSH/cdo.htm

2

Chúng tôi sử dụng blat để làm điều này mọi lúc trong môi trường của chúng tôi. Tôi cũng sử dụng nó để kết nối với Gmail với Stunnel. Dưới đây là các params để gửi một tập tin

blat -to [email protected] -server smtp.example.com -f [email protected] -subject "subject" -body "body" -attach c:\temp\file.txt 

Hoặc bạn có thể đặt tập tin đó trong khi cơ thể

blat c:\temp\file.txt -to [email protected] -server smtp.example.com -f [email protected] -subject "subject" 
20

Bạn cũng có thể sử dụng một kịch bản Power Shell:

$smtp = new-object Net.Mail.SmtpClient("mail.example.com") 

if($Env:SmtpUseCredentials -eq "true") { 
    $credentials = new-object Net.NetworkCredential("username","password") 
    $smtp.Credentials = $credentials 
} 
$objMailMessage = New-Object System.Net.Mail.MailMessage 
$objMailMessage.From = "[email protected]" 
$objMailMessage.To.Add("[email protected]") 
$objMailMessage.Subject = "eMail subject Notification" 
$objMailMessage.Body = "Hello world!" 

$smtp.send($objMailMessage) 
+1

được bỏ phiếu. Nhưng nếu bạn không muốn tạo một '.ps1', [bạn có thể gọi nó trực tiếp từ lô] (http://stackoverflow.com/a/38604180/2518317) – Hashbrown

+0

Câu hỏi là về BATCH, chứ không phải là powershell. Poweshell chỉ hỗ trợ W7 trở lên –

3

Bạn cũng có thể sử dụng sendmail. Tôi đang sử dụng nó trong móc lật đổ này để gửi thông báo qua email: post-commit hook

1

Có nhiều phương pháp để xử lý sự cố này.

Lời khuyên của tôi là sử dụng ứng dụng bảng điều khiển phần mềm miễn phí Windows mạnh mẽ SendEmail.

sendEmail.exe -f [email protected] -o message-file=body.txt -u subject message -t [email protected] -a attachment.zip -s smtp.gmail.com:446 -xu gmail.login -xp gmail.password 
6

PowerShell comes with a built in command for it. Vì vậy, chạy trực tiếp từ một tập tin .bat:

powershell -ExecutionPolicy ByPass -Command Send-MailMessage^
    -SmtpServer server.address.name^
    -To [email protected]^
    -From [email protected]^
    -Subject Testing^
    -Body 123 

NB-ExecutionPolicy ByPass chỉ cần thiết nếu bạn chưa thiết lập quyền cho chạy PS từ CMD

Ngoài ra cho những ai muốn gọi nó là từ trong phạm vi quyền hạn, thả mọi thứ trước -Command [bao gồm] và ` sẽ là nhân vật thoát của bạn (không phải ^)

Các vấn đề liên quan