Outlook
regexp
интеграция
Интеграция и импорт данных
Разработка

разбор писем OUTLOOK

Может кто-то делал автоматический разбор сообщений OUTLOOK?
Задача проста: после автозагрузки письма, автоматически прочитать тему, отправителся, получателя и главное сам текст сообщения то есть разбирать IMAGE-поле (поиск с regexp'ами).
Нужен какой-нибудь пример или ссылка.

Нравится

14 комментариев

Добрый день!

На самом деле, это довольно трудоемкая задача, которая требует реализации механизма считывания данных из письма, их обработки и сохранения.

К сожалению, в рамках технической поддержки, подобных реализаций не было.

Большое спасибо за ответы. Жаль что они мне мало чем помогли. Если что-то "накопаю", то выложу тут

а у TS есть компонент которым можно "смотреть" сообщение?
или надо аутлуковскими com-объектами пользоваться?

Только через com.
А что за версия TSClient?

"Евгений Либин" написал:

А что за версия TSClient?


TSClient v3.3.2.305

"Евгений Либин" написал:

А что за версия TSClient?


TSClient v3.3.2.305

Шансы есть.
В 3.3.2 интеграцию с Outlook перенесли в скрипты конфигурации и там можно вклиниться, но нужно понимать, что если одно и то же письмо придет двум и более человек, то есть шанс задвоить обработку.

"Евгений Либин" написал:

Шансы есть.

В 3.3.2 интеграцию с Outlook перенесли в скрипты конфигурации и там можно вклиниться, но нужно понимать, что если одно и то же письмо придет двум и более человек, то есть шанс задвоить обработку.


Отлично, Евгений, Вы меня обрадовали :-) буду разбираться!

Кстати, может быть удобнее было бы "разгребать" загруженные письма с помощью функционала SQL-сервера?

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

"Евгений Либин" написал:

Так не получится.

Хотя, можно сделать отдельный сервис для обработки писем, т.е. выгребать из базы все необработанные письма и обрабатывать их.


Если под "сервисом" понимать террасофт, то НЕТ. Я имел ввиду забыть про террасофт и, к примеру, повесить триггер на инсерт в табличку 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]

Показать все комментарии