vbscriptsendmailoutlook-2007

VBScript to send email without running Outlook


I have written an automated test that runs each night, and I would like to email the results each night once the test is finished.

In order to do this I attempted to put the following at the end of my batchfile:

Set MyApp = CreateObject("Outlook.Application")
Set MyItem = MyApp.CreateItem(0)
With MyItem
    .To = "a@a.com"
    .Subject = "Subject"
    .ReadReceiptRequested = False
    .HTMLBody = "resport"
End With
MyItem.Send

However, this is causing the email to not send because my Outlook is not open, as the test is run in the background, and I have no access to the UI.

Is there anyway to send this email without actually running outlook on the machine.

Thanks!


Solution

  • You can send email without Outlook in VBScript using the CDO.Message object. You will need to know the address of your SMTP server to use this:

    Set MyEmail=CreateObject("CDO.Message")
    
    MyEmail.Subject="Subject"
    MyEmail.From="name@domain.com"
    MyEmail.To="a@a.com"
    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
    

    If your SMTP server requires a username and password then paste these lines in above the 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"
    

    More information on using CDO to send email with VBScript can be found on the link below: http://www.paulsadowski.com/wsh/cdo.htm