Может кто-то делал автоматический разбор сообщений OUTLOOK?
Задача проста: после автозагрузки письма, автоматически прочитать тему, отправителся, получателя и главное сам текст сообщения то есть разбирать IMAGE-поле (поиск с regexp'ами).
Нужен какой-нибудь пример или ссылка.
Нравится
Добрый день!
На самом деле, это довольно трудоемкая задача, которая требует реализации механизма считывания данных из письма, их обработки и сохранения.
К сожалению, в рамках технической поддержки, подобных реализаций не было.
Шансы есть.
В 3.3.2 интеграцию с Outlook перенесли в скрипты конфигурации и там можно вклиниться, но нужно понимать, что если одно и то же письмо придет двум и более человек, то есть шанс задвоить обработку.
"Евгений Либин" написал:Шансы есть.
В 3.3.2 интеграцию с Outlook перенесли в скрипты конфигурации и там можно вклиниться, но нужно понимать, что если одно и то же письмо придет двум и более человек, то есть шанс задвоить обработку.
Отлично, Евгений, Вы меня обрадовали :-) буду разбираться!
Так не получится.
Хотя, можно сделать отдельный сервис для обработки писем, т.е. выгребать из базы все необработанные письма и обрабатывать их.
"Евгений Либин" написал:Так не получится.
Хотя, можно сделать отдельный сервис для обработки писем, т.е. выгребать из базы все необработанные письма и обрабатывать их.
Если под "сервисом" понимать террасофт, то НЕТ. Я имел ввиду забыть про террасофт и, к примеру, повесить триггер на инсерт в табличку tbl_MailMessage, который будет смотреть на новую запись, парсить (средствами sql, может с привлечением com-outlook)...
Коллеги, если кому-то интересно сделал (пока) простой вариант поиска в содержимом письма:
В scr_MailUtils сделал функцию
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; } }
Нужно расширить функцию и, возможно, в дальнейшем включить в базовый функционал.
В моем случае нужна проверка на наличие майлов в теле письма. Поэтому при получении письма в scr_MSOutlookLibrary в функции сохранения письма function SaveMailItem (в моем случае после POST для MessageContent) вставил
FindTextInMessage (FileName, '%%mail');
Ну и собственно, если надо файл из базы вытянуть, то
var FileName = SaveMailMessageToFile(RecordID);