|
|
Метод | Описание | Аргументы | Возвращаемое значение |
AddAttachment | Прикрепляет указанный файл к письму в качестве вложения | FilePath | Нет |
Reset | Очистка тела письма и удаление вложений | Нет | Нет |
Send | Отправка письма | Нет | Нет |
Забегая вперед, следует заметить, что создваемый нами объект будет представлять "обертку" для класса CDO.Message, относящегося к Collaboration Data Objects (CDO 2000). CDO 2000 является составной частью Windows, начиная с Windows 2000, поэтому в более ранних версиях ОС наш объект работать не будет, о чем и уведомит значением свойства CanWork=False.
До начала работы следует посетить раздел сайта Microsoft, посвященный скриптовым технологиям - http://www.microsoft.com/scripting и скачать оттуда последнюю версию WSH (5.6 на момент написания статьи), документацию по WSH (на английском языке), и самое главное - Windows Script Component Wizard - инструмент, позволяющий выполнить рутинную работу по созданию WSC.
Далее мы пройдем все шаги с применением WSC Wizard по созданию "скелета" класса и опишем дальнейшие ручные операции по его корректировке и добавлению необходимой функциональности. Разобьем условно создание компоненты на три шага: создание заготовки компоненты с помощью мастера, корректировка созданной заготовки, добавление функциональности.
Запустим Windows Script Component Wizard и заполним первую страницу как показано на рисунке:
Расположение результирующего файла (Location) можно указать любое.
На следующей странице указывается язык, на котором будет написан WSC, поддержку специальных возможностей включать не надо. На первоначальном этапе отладки имеет смысл установить флажок "Error checking" тогда при регистрации компоненты будет проверяться ее синтаксис, а после окончания разработки эту опцию отключить.
Далее заполняются свойства в соответствии с таблицей свойств объекта V7Backup.Mail.
Аналогично перечисляются и методы. Страницу мастера с настройкой событий можно в нашем случае пропустить.
На этом создание заготовки компоненты можно считать завершенным.
Откроем полученный файл MailObj.wsc любым текстовым редактором, например Notepad'ом. Мы увидим обычный XML- файл с достаточно прозрачной структурой, которая хорошо описана в документации по WSC, поэтому нет смысла здесь описывать ее еще раз. Внесем в полученный файл небольшие правки. Во первых, нужно указать кодировку XML-файла как кириллическую, иначе мы не сможем написать в нем ни одного слова на великом и могучем:
<?xml version="1.0" encoding="windows-1251"?>
Далее, все объявленные нами методы не возвращают никаких значений, то есть в терминологии Visual Basic являются процедурами. Мастер объявил их для нас как функции, возвращающие значения:
function AddAttachment(FilePath)
AddAttachment = "Temporary Value"
end function
Мы должны все три функции объявить как процедуры:
sub AddAttachment(FilePath) end sub
В начало скрипта перед сгенерированным мастером объявлением и инициализацией переменных добавим опцию Option Explicit, означающую, что все используемые переменные должны быть обязательно объявлены, и константы CDO:
Option Explicit ' Константы CDO Private Const cdoSendUsingMethod = "http://schemas.microsoft.com/cdo/configuration/sendusing" Private Const cdoSendPassword = "http://schemas.microsoft.com/cdo/configuration/sendpassword" Private Const cdoSendUserName = "http://schemas.microsoft.com/cdo/configuration/sendusername" Private Const cdoSMTPServer = "http://schemas.microsoft.com/cdo/configuration/smtpserver" Private Const cdoSMTPAuthenticate = _ "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" Private Const cdoSMTPConnectionTimeout = _ "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout" Private Const cdoSMTPServerPort = _ "http://schemas.microsoft.com/cdo/configuration/smtpserverport" Private Const cdoSendUsingPort = 2 Private Const cdoBasic = 2
Далее, после объявления и инициализации переменных добавим объявление, создание и проверку объекта CDO.Message:
Private oCDOMsg ' Ссылка на объект CDO.Message On Error Resume Next Set oCDOMsg = Nothing Set oCDOMsg = CreateObject("CDO.Message") CanWork = Not (oCDOMsg Is Nothing)
И в конце скрипта заполним тела процедур, реализующих методы:
sub AddAttachment(FilePath) ' Добавляет вложение к письму On Error Resume Next If Not CanWork Then Exit Sub oCDOMsg.AddAttachment FilePath end sub sub Reset() 'Очищает тело письма и удаляет вложения On Error Resume Next Body = "" oCDOMsg.Attachments.DeleteAll ' удаляем все вложения oCDOMsg.Configuration.Fields.Update end sub sub Send() ' Отправляет письмо. On Error Resume Next If Not CanWork And Address <> "" Then Exit Sub ' с пустым адресом отправлять не будем oCDOMsg.From = From oCDOMsg.To = Address oCDOMsg.Subject = Subject oCDOMsg.Textbody = Body oCDOMsg.Configuration.Fields.Item(cdoSendUsingMethod) = cdoSendUsingPort oCDOMsg.Configuration.Fields.Item(cdoSMTPConnectionTimeout) = 10 oCDOMsg.Configuration.Fields.Item(cdoSMTPAuthenticate) = cdoBasic oCDOMsg.Configuration.Fields.Item(cdoSendPassword) = SMTPPassword oCDOMsg.Configuration.Fields.Item(cdoSendUserName) = SMTPUserName oCDOMsg.Configuration.Fields.Item(cdoSMTPServer) = SMTPServer oCDOMsg.Configuration.Fields.Item(cdoSMTPServerPort) = SMTPPort oCDOMsg.Configuration.Fields.Update oCDOMsg.Send end sub
Все, создание WSC завершено!
Для регистрации WSC следует открыть Проводник Windows, найти там WSC-файл, и щелкнуть по нему левой кнопкой мыши. В появившемся контекстном меню выбрать пункт "Подключить". Аналогично осуществляется и отключение компоненты.
После регистрации можно написать небольшой скрипт для проверки функционирования объекта. Например, такой (адреса в примере вымышленные, необходимо подставить свои):
set m = CreateObject("V7Backup.Mail") m.From = "V7Backup@coolcompany.ru" m.Address = "admin@coolcompany.ru" m.SMTPServer = "mail.coolcompany.ru" m.Subject = "Проверка связи" m.Body = "Привет" m.Send m.Reset m.AddAttachment "C:\MailObj\Send.vbs" m.Send
Скрипт отправит два письма с темой "Проверка связи". У первого в теле письма будет написано "Привет", а у второго тело будет пустое (сработает метод Reset) но оно будет иметь прикрепленный файл Send.vbs (разумеется он должен существовать по указанному в вызове метода AddAttachment пути).
На этом первоначальное знакомство с технологией Windows Script Components можно считать завершенным. Успехов в ее дальнейшем освоении!
|