VBScript для отправки электронной почты без запуска Outlook - PullRequest
14 голосов
/ 12 августа 2011

Я написал автоматизированный тест, который запускается каждую ночь, и я хотел бы отправлять результаты по электронной почте каждую ночь после его завершения.

Для этого я попытался поместить в конец моего пакетного файла следующее:

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

Однако это приводит к тому, что электронное письмо не отправляется, потому что мой Outlook не открыт, поскольку тест выполняется в фоновом режиме, и у меня нет доступа к пользовательскому интерфейсу.

Можно ли в любом случае отправить это электронное письмо, не запустив Outlook на компьютере?

Спасибо!

Ответы [ 2 ]

27 голосов
/ 12 августа 2011

Вы можете отправлять электронную почту без Outlook в VBScript, используя объект CDO.Message .Чтобы использовать это, вам нужно знать адрес вашего SMTP-сервера:

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

Если вашему SMTP-серверу требуются имя пользователя и пароль, вставьте эти строки выше строки MyEmail.Configuration.Fields.Update:

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

Более подробную информацию об использовании CDO для отправки электронной почты с помощью VBScript можно найти по ссылке ниже: http://www.paulsadowski.com/wsh/cdo.htm

0 голосов
/ 12 августа 2011

Да.Блат или любой другой автономный почтовый SMTP.Blat - это достаточно полнофункциональный SMTP-клиент, который запускается из командной строки

Blat здесь

...