find us on facebook!
 

Использование JScript в AEE

Настройка программы JScript выполняется на закладке "JScript" при создании нового проекта.

Настройка JScript.

Введение в JScript

JScript - мощный язык программирования, поддерживающий автоматизацию COM/ActiveX. Из программы JScript вы можете взаимодействовать с документами MS Excel, базами данных MS Access и другими современными приложениям, поддерживающими технологию COM/ActiveX. Узнать больше о языке, ознакомиться с примерами и загрузить документацию по языку можно на сайте Microsoft.

В AEE программа на JScript применяется для "одобрения" адреса электронной почты. Если адрес удовлетворяет прочим ограничениям, задаваемым в настройках AEE, то программа на JScript говорит последнее решающее слово - добавлять адрес в список найденных или нет. Для принятия решения она может использовать, к примеру, проверку адреса через Advanced Maillist Verify, сравнивать почтовый ящик и/или домен адреса со списком нужных ящиков/доменов заданных непосредственно в самой программе или во внешнем источнике (например, в документе MS Excel).

Объекты JScript

Advanced Email Extractor расширяет пространство имен JScript объектом с именем emex3, содержащим следующие свойства и методы:

Название Тип Описание
DataField Свойство. Только для чтения. Возвращает результат по запрашиваемому полю. Например для закладки Email, запрос emex3.DataField(0) вернет емейл адрес.
URL Property. Read-only. Возвращает URL обрабатываемого документа
Document Property. Read-only. Возвращает содержимое обрабатываемого документа
URLDomain Property. Read-only. Возвращает домен обрабатываемого документа
URLDocument Property. Read-only. Возвращает имя обрабатываемого документа
GetEmailDomain Method. Возвращает домен указанного емейла. Например var x = emex3.GetEmailDomain("user@mail.cc"); вернет mail.cc
GetEmailUser Method. Возвращает имя пользователя от указанного емейла. Например var x = emex3.GetEmailUser("user@mail.cc"); вернет user
AddDomainToIgnoreList Method. Добавить домен в список игнорируемых доменов. Аргумент может быть как URL, так и имя домена. Например emex3.AddDomainToIgnoreList("wikipedia.org");
StopProcessCurrentDomain Method. Добавить домен обрабатываемого документа в список игнорируемых
Stop Method. Остановить исполнение проекта.
Pause Method. Пауза
Start Method. Продолжить исполнение проекта
Approve Метод. Если этот метод не будет вызван во время работы скрипта, то адрес электронной почты не будет "одобрен" и не будет добавлен в список найденных адресов.

Ограничения

Обратите внимание, что программа на JScript выполняется для каждого нового найденного адреса. Если Ваша программа будет, помимо прочего, использовать "тяжелые" объекты ActiveX, то это может повлечь серьезные проблемы производительности, связанные как с большой нагрузкой на CPU, так и с нехваткой оперативной памяти. Так как найденные адреса обрабатываются последовательно в один поток, то использование медленных объектов и алгоритмов может сказаться на скорости сканирования.

Обратите внимание, что в незарегистрированной копии AEE не разрешается создание компонентов ActiveX из скрипта.

Примеры программ

Пример 1. Программа не позволяющая добавлять в список адреса с почтовыми ящиками postmaster, webmaster и info.

var vMailBox = emex3.GetEmailUser(emex3.DataField(0));

vMailBox = vMailBox.toLowerCase();
 
if (vMailBox != "webmaster" &&
    vMailBox != "postmaster" &&
    vMailBox != "info")
{
    emex3.Approve();
}

Пример 2. Программа не позволяющая добавлять в список адреса, содержащие слово SPAM в имени владельца адреса, в адресе электронной почты или в адресе веб-страницы. Поиск ключевого ведется при помощи регулярного выражения.

var re = "/spam/i";
var s = emex3.DataField(0) + " " +
        emex3.URL + " " +
        emex3.DataField(1);
if (s.match(re) == null) emex3.Approve();

Пример 3. Программа одобряет только те адреса, почтовые домены которых перечислены в файле C:domains.txt. Пример будет работать только в зарегистрированном Advanced Email Extractor. Также для работы примера в корневом каталоге диска C: нужно создать файл domains.txt следующего формата:

mail.com
aol.com
email.com
microsoft.com
altavista.net

В каждой строке файла должен быть указан один почтовый домен, не содержащий символов пробела и табуляции вокруг. С приведенным выше файлом данных, программа одобрит адреса test@mail.com, john@aol.com и т.д.

Код программы:

var fs, f, s, domain;

fs = new ActiveXObject("Scripting.FileSystemObject");
f = fs.OpenTextFile("C:\\domains.txt", 1);
domain = emex3.GetEmailDomain(emex3.DataField(0));;
domain = domain.toLowerCase();

while (!f.AtEndOfStream)
{
   s = f.ReadLine();   
   if (s == domain)
   {
       emex3.Approve();
       break;
   }
}

f.Close();

Пример 4. Программа одобряет только реально существующие адреса. Проверка адреса осуществляется при помощи Advanced Maillist Verify, должна быть установлена версия 3.0 и выше. Пример будет работать только в зарегистрированном Advanced Email Extractor. Обратите внимание, что проверка одного адреса может занять до минуты, интерфейс Advanced Email Extrctor будет "заморожен" на время проверки; программа не одобряет адреса которые не удалось проверить (например, почтовый сервер получателя был недоступен), но которые могут существовать.

var st, amv;

amv = new ActiveXObject('AdvancedMaillistVerify.EmailVerifier');
if (amv)
{
    amv.Email = emex3.DataField(0);
    do
    {	
 	st = amv.Status; 
	amv.Sleep = 300;
     }
    while (st != 3);

    if (amv.Result == 0)
    {
       // Email is exist
       emex3.Approve();
    }
    amv = "";
}

Пример 5. Программа проверяет наличие адреса в документе D:list.xls, добавляя новые адреса в документ и "одобряя" их. Для работы примера должен существовать документ D:list.xls, должен быть установлен Microsoft Excel и Advanced Email Extractor должен быть зарегистрирован.

var f = "D:\\list.xls";

var xl = new ActiveXObject("Excel.Application");
if(xl)
{
  var wb = xl.Workbooks.Open(f);
  if(wb)
  {
    var ws = wb.Worksheets(1);
    var item = ws.Columns(1).Find(emex3.DataField(0));
    if(!item)
    {
        var cnt = ws.Rows.Count;
        var idx = 1;
        while(idx < cnt)
        {
           if(ws.Cells(idx, 1).Value == null) break;
           idx++;
         }
         ws.Cells(idx, 1) = emex3.DataField(0);
         emex3.Approve();
    }
    wb.Close(true);
  }
}


 
(c) EMMA Labs, 2018 | Мы против спама