Может кто-то делал автоматический разбор сообщений OUTLOOK?
Задача проста: после автозагрузки письма, автоматически прочитать тему, отправителся, получателя и главное сам текст сообщения то есть разбирать IMAGE-поле (поиск с regexp'ами).
Нужен какой-нибудь пример или ссылка.
Нравится
Добрый день!
На самом деле, это довольно трудоемкая задача, которая требует реализации механизма считывания данных из письма, их обработки и сохранения.
К сожалению, в рамках технической поддержки, подобных реализаций не было.
Шансы есть.
В 3.3.2 интеграцию с Outlook перенесли в скрипты конфигурации и там можно вклиниться, но нужно понимать, что если одно и то же письмо придет двум и более человек, то есть шанс задвоить обработку.
"Евгений Либин" написал:Шансы есть.
В 3.3.2 интеграцию с Outlook перенесли в скрипты конфигурации и там можно вклиниться, но нужно понимать, что если одно и то же письмо придет двум и более человек, то есть шанс задвоить обработку.
Отлично, Евгений, Вы меня обрадовали :-) буду разбираться!
Так не получится.
Хотя, можно сделать отдельный сервис для обработки писем, т.е. выгребать из базы все необработанные письма и обрабатывать их.
"Евгений Либин" написал:Так не получится.
Хотя, можно сделать отдельный сервис для обработки писем, т.е. выгребать из базы все необработанные письма и обрабатывать их.
Если под "сервисом" понимать террасофт, то НЕТ. Я имел ввиду забыть про террасофт и, к примеру, повесить триггер на инсерт в табличку tbl_MailMessage, который будет смотреть на новую запись, парсить (средствами sql, может с привлечением com-outlook)...
Коллеги, если кому-то интересно сделал (пока) простой вариант поиска в содержимом письма:
В scr_MailUtils сделал функцию
[javascript]
function FindTextInMessage (FileName, SearchString) {
if (!GetCanCreateMessage(true)) {
return;
}
if (!InitMailUtils()) {
return;
}
var MailItem = Outlook.Application.CreateItemFromTemplate(FileName);
//var Body = GetMailItemBody(MailItem);
var Body = MailItem.Body;
Body = Body.replace(new RegExp('%20', 'ig'), ' '); //потому что все равно в текст закрадываются огрызки html
switch (SearchString) {
case '%%mail': //
var STR = '[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-])+\.(ru|com|de|org)';
var re = new RegExp(STR, 'ig');
var re1 = new RegExp(STR);
var FindString = Body.match(re);
var IsExist = re1.test(Body); //если существует
if (IsExist) {
Log.Write(1,'найден майл: ' + FindString );
}
break;
case undefined:
case null:
Log.Write(1, 'не указан текст поиска');
break;
default:
var re = new RegExp (SearchString, 'ig');
var FindString = Body.match(re);
Log.Write(1, 'найден текст: ' + FindString);
break;
}
}
[/javascript]
Нужно расширить функцию и, возможно, в дальнейшем включить в базовый функционал.
В моем случае нужна проверка на наличие майлов в теле письма. Поэтому при получении письма в scr_MSOutlookLibrary в функции сохранения письма function SaveMailItem (в моем случае после POST для MessageContent) вставил
[javascript]
FindTextInMessage (FileName, '%%mail');
[/javascript]
Ну и собственно, если надо файл из базы вытянуть, то
[javascript]
var FileName = SaveMailMessageToFile(RecordID);
[/javascript]