2011-08-12 28 views
9

Napisałem test automatyczny, który uruchamiany jest każdej nocy, a ja chciałbym wysłać wyniki e-mailem każdej nocy po zakończeniu testu.VBScript do wysyłania wiadomości e-mail bez uruchamiania Outlooka

W tym celu próbowałem umieścić następujące po zakończeniu mojego program wsadowy:

Set MyApp = CreateObject("Outlook.Application") 
Set MyItem = MyApp.CreateItem(0) 
With MyItem 
    .To = "[email protected]" 
    .Subject = "Subject" 
    .ReadReceiptRequested = False 
    .HTMLBody = "resport" 
End With 
MyItem.Send 

Jednak to powoduje e-mail, aby nie wysyłać, ponieważ mój program Outlook nie jest otwarta, ponieważ test jest działa w tle i nie mam dostępu do interfejsu użytkownika.

Czy mimo to można wysłać tę wiadomość e-mail bez faktycznego uruchamiania programu na komputerze.

Dzięki!

+0

http://stackoverflow.com/questions/6588621/how-to-send-email-to-a-distribution-list-with -vbscript-in-an-asp –

Odpowiedz

19

można wysłać e-mail bez programu Outlook w VBScript przy użyciu CDO.Message obiekt. Musisz znać adres serwera SMTP, aby korzystać z tego:

Set MyEmail=CreateObject("CDO.Message") 

MyEmail.Subject="Subject" 
MyEmail.From="[email protected]" 
MyEmail.To="[email protected]" 
MyEmail.TextBody="Testing one two three." 

MyEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing")=2 

'SMTP Server 
MyEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver")="smtp.server.com" 

'SMTP Port 
MyEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25 

MyEmail.Configuration.Fields.Update 
MyEmail.Send 

set MyEmail=nothing 

Jeśli serwer SMTP wymaga nazwy użytkownika i hasła, a następnie wklej te wiersze w ponad MyEmail.Configuration.Fields.Update line:

'SMTP Auth (For Windows Auth set this to 2) 
MyEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1 
'Username 
MyEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername")="username" 
'Password 
MyEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword")="password" 

Więcej informacji o użyciu CDO do wysyłania wiadomości e-mail z VBScript można znaleźć pod poniższym linkiem: http://www.paulsadowski.com/wsh/cdo.htm

+0

Dziękuję bardzo! To pomaga tonie! Poprosiłem o nazwę serwera i mam nadzieję, że otrzymam ją do poniedziałku. Wtedy wybiorę to jako zaakceptowaną odpowiedź. – user856354

+0

Co jeśli chcę, aby nazwa użytkownika i nazwa komputera były zawarte w mailu takim jak 'userxyz zalogowany do maszynyxyz'. W rzeczywistości mam klienta Windows 7, na którym chcę śledzić logowanie przez wysyłanie wiadomości. Tak będę wywoływać ten kod jako zadanie zdarzenia logowania. Mam Windows Server 2008, który zarządza AD. Więc gdzie powinienem skonfigurować regułę [this] (http://superuser.com/questions/660703/getting-mail-on-windows-logon-with-username-of-logged-in-user) - na wygranym 7 kliencie lub wygraj serwer. Czy to coś zmieni? Czy można to osiągnąć za pomocą 'vbs'? – Mahesha999

0

Tak. Blat lub inny samodzielny program do wysyłania SMTP. Blat jest dość pełni funkcjonalny klient SMTP, który działa z linii poleceń

Blat is here

Powiązane problemy