2011-08-12 42 views
9

Tôi đã viết một thử nghiệm tự động chạy mỗi đêm và tôi muốn gửi email kết quả mỗi đêm sau khi thử nghiệm kết thúc.VBScript để gửi email mà không cần chạy Outlook

Để làm được điều này, tôi đã cố gắng để đưa sau vào cuối batchfile tôi:

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 

Tuy nhiên, điều này đang gây ra email để không gửi vì Outlook của tôi là không mở, như thử nghiệm là chạy ở chế độ nền và tôi không có quyền truy cập vào giao diện người dùng.

Có cách nào để gửi email này mà không thực sự chạy triển vọng trên máy.

Cảm ơn!

+0

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

Trả lời

19

Bạn có thể gửi email mà không cần Outlook trong VBScript sử dụng CDO.Message đối tượng. Bạn sẽ cần phải biết địa chỉ của máy chủ SMTP của bạn để sử dụng này:

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 

Nếu máy chủ SMTP của bạn yêu cầu tên người dùng và mật khẩu sau đó dán những dòng này trong phía trên MyEmail.Configuration.Fields.Update dòng:

'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" 

Thông tin thêm về việc sử dụng CDO để gửi email bằng VBScript có thể được tìm thấy trên liên kết bên dưới: http://www.paulsadowski.com/wsh/cdo.htm

+0

Cảm ơn bạn rất nhiều! Điều này giúp một tấn! Tôi đã yêu cầu tên của máy chủ và hy vọng sẽ có nó vào thứ hai. Sau đó, tôi sẽ chọn điều này làm câu trả lời được chấp nhận. – user856354

+0

Nếu tôi muốn tên người dùng và tên máy được bao gồm trong thư như 'userxyz đã đăng nhập vào machinexyz'. Thực ra tôi có máy khách Windows 7 mà tôi muốn theo dõi thông tin đăng nhập bằng cách gửi thư. Vì vậy, tôi sẽ gọi mã này là nhiệm vụ sự kiện đăng nhập. Tôi có Windows Server 2008 quản lý AD. Vậy tôi nên định cấu hình quy tắc [this] (http://superuser.com/questions/660703/getting-mail-on-windows-logon-with-username-of-logged-in-user) - trên máy khách 7 hoặc giành chiến thắng máy chủ. Điều đó có tạo nên sự khác biệt nào không? Cũng có thể đạt được điều này bằng cách sử dụng 'vbs'? – Mahesha999

0

Có. Blat hoặc bất kỳ thư chứa SMTP nào khác. Blat là một khách hàng SMTP tính năng khá đầy đủ mà chạy từ dòng lệnh

Blat is here

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