2009-04-02 24 views
43

Mamy skrypt do tworzenia kopii zapasowych plików. Po zakończeniu operacji tworzenia kopii zapasowej chcielibyśmy wysłać raport jako powiadomienie e-mailowe na niektóre z naszych adresów e-mail.wysyłanie wiadomości z pliku wsadowego

Jak można to zrobić?

+0

plzsendz Tehcodz? –

+2

Jestem zdezorientowany. Pyta, jak wysłać e-mail z pliku wsadowego. Jak to nie jest pytanie programistyczne? – RossFabricant

+0

Cholernie to "partia, a nie bash, zapomnij mój komentarz – chburd

Odpowiedz

8

bmail. Wystarczy zainstalować EXE i uruchomić wiersz tak:

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

Tutaj nie mogę zainstalować bamil zgodnie z celem bezpieczeństwa. plz powiedz mi, czy istnieje jakiś alernowy sposób na rozwiązanie mojego problemu. – user73628

+0

Czy próbowałeś z innymi klientami poczty e-mail z wiersza poleceń? Wyszukiwarka Google wymienia wiele swobodnie dostępnych narzędzi. –

6

Najprostszym sposobem jest użycie aplikacji firm trzecich, jak wspomniano przez innych

Jeśli tak nie jest opcja Napisałem proste narzędzie sendmail przy użyciu vbscript & CDO, które wywołałem ze skryptu wsadowego

Zobacz przykłady tutaj http://www.paulsadowski.com/WSH/cdo.htm

2

Używamy blatu, aby robić to cały czas w naszym otoczeniu. Używam go również do łączenia się z Gmailem pod numerem Stunnel. Oto params wysłać plik

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

Albo można umieścić ten plik jako ciała

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

Można również użyć skryptu zasilania Obudowa:

$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

. Ale jeśli nie chcesz tworzyć ".ps1", [możesz nazwać to prosto z partii] (http://stackoverflow.com/a/38604180/2518317) – Hashbrown

+0

Pytanie dotyczyło BATCH, a nie powershell. Poweshell obsługuje tylko W7 i nowsze –

3

można również użyj sendmail. Używam go w tym haku subversion do wysyłania powiadomień e-mail: post-commit hook

1

Istnieje wiele metod radzenia sobie z tym problemem.

Moja rada to skorzystanie z zaawansowanej aplikacji darmowej konsoli Windows 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. Tak działa bezpośrednio z pliku .bat:

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

NB-ExecutionPolicy ByPass jest potrzebne tylko wtedy, gdy nie skonfigurowano uprawnienia do prowadzenia PS z CMD

także dla tych, którzy chcą wywołać ją z w ramach powershell, upuść wszystko przed -Command [włącznie], a ` będzie twoją ucieczką (nie ^)

Powiązane problemy