2017-01-20 42 views
0

Я хочу создать приложение, которое прослушивает событие отправленной почты Lotus Notes и обрабатывает отправленную почту.Прослушивание события Lotus Notes (отправленное письмо) с помощью OLE (с использованием Delphi)

Я развиваю это с помощью Delphi, и поскольку нет ничего другого, я думаю, что я застрял в использовании OLE (уже используя OLE для доступа к выбранной почте из Lotus Notes и ее обработки).

Итак, есть ли способ подписаться на некоторые из событий Lotus Notes и получить соответствующие данные с помощью OLE? (в этом конкретном случае я хотел бы подписаться на событие «отправленное письмо» и получить почтовый документ). Я также открыт для предложений, если кто-то, с большим опытом Lotus Notes, знает какой-то другой способ сделать это, но в итоге мне нужно получить доступ к почте с помощью Delphi.

Приложение должно запускаться на клиентской машине, а не на сервере.

Благодаря

+0

От OLE, я полагаю, вы имеете в виду * COM *. OLE уже давно мертв. Google * Автоматизация Lotus Notes *, которая позволит вам получить доступ к функциям Notes для внешних приложений. Тем не менее, подготовка к кошмару документации, не соответствующей фактической реализации. –

+0

Lotus поддерживает оба класса COM и OLE. Классы COM основаны на lotus.NotesSession, а классы OLE основаны на Notes.NotesSession и Notes.NotesUIWorkspace. Классы OLE требуют, чтобы клиент Notes выполнялся - и запустит его, если это не так. Для классов COM не требуется, чтобы клиент Notes работал, но требует, чтобы он был установлен и настроен. –

+0

А прослушивание событий возможно с помощью OLE? У вас есть код примера? – rimes

ответ

1

На самом деле, COM-интерфейс для Lotus Notes довольно хорошо документированы, может быть, потому, что он принадлежал IBM уже более десяти лет. Здесь вы найдете один из способов: http://www.ibm.com/support/knowledgecenter/SSVRGU_9.0.0/com.ibm.designer.domino.main.doc/H_ACCESSING_THE_DOMINO_OBJECTS_THROUGH_COM.html.

Для Delphi вам необходимо создать блок импорта Domino_Tlb.Pas для COM-интерфейса Notes; это время, так как я сделал это, но я думаю, что вы это делаете, используя Delphi TypeLib Importer в Notes NlsXbe.Dll, который является частью как установки клиента Notes, так и сервера.

AFAIR, ноты «COM-поддержка не выставляет никаких COM-событий, поэтому нет поддержки« подписки »в смысле исходящего, управляемого событиями интерфейса. Тем не менее, для Notes важно использовать свой язык, похожий на VB-язык LotusScript, для записи «агентов», которые могут контролировать файлы почты, чтобы инициировать любые действия, соответствующие тем требованиям, которые необходимы для бизнеса. Поскольку нет «событий», агентов, реализованных с использованием интерфейса COM, они должны работать, периодически опросив интересующую базу данных Notes, и есть функции, доступные для поиска ранее необработанных почтовых отправлений (отправленных или полученных). Например, можно опрашивать Входящие Заметки DB с кодом, как это:

View := DB.GetView('($Inbox)'); 
    Res := View.FTSEARCH('FIELD PostedDate < ''01/05/2012'' or FIELD DeliveredDate < ''01/05/2012''', 0); 

    Doc := View.GetFirstDocument; 
    Done := Doc <> Nil; 
    while not Done do begin 
    vFrom := Doc.GetItemValue('INetFrom'); 
    [...] 
    Doc := View.GetNextDocument(Doc); 
    if Doc = Nil then 
     Done := True; 
    end; 

Update: Агенты, написанные на LotusScript имеют доступ к встроенной коллекции UnprocessedDocuments, который является уникальным для индивидуального агента, так что могу сказать уже обработал ли документ (см. http://www-12.lotus.com/ldd/doc/lotusscript/lotusscript.nsf/1efb1287fc7c27388525642e0074f2b6/fa9dc4724dab0fed8525642e007702d6?OpenDocument). Я не помню, будет ли это работать для COM-агента, но я сомневаюсь, что это имеет значение, если бы это произошло не потому, что COM-агент мог всегда писать собственный собственный элемент в документ, чтобы указать, что он его обработал.

ISTR, что было бы довольно неприятно узнать, какие поля Notes используются для этой цели. Работа с документами Notes с использованием интерфейса COM довольно проста, и когда я делал такие вещи десять лет назад, я никогда не сталкивался с непреодолимыми препятствиями для того, что мне нужно было делать.

Я сомневаюсь, что большинство администраторов Notes разрешили бы делать подобные вещи на сервере Notes, но все это отлично работает с клиентской машины и благодаря встроенной поддержке репликации db вы можете сделать это либо на сервере версии db или локальной реплики.

По существу, те же функции, что и в LotusScript, доступны через интерфейс COM.

Я боюсь, что у меня возникло желание установить Java-агентов на сервер Domino - см., Например, Running java agents in lotus notes.В моей фирме мы устранили это как возможность очень рано из-за хаоса, создающего потенциал плохого агента на живом корпоративном почтовом сервере.

+0

Как я уже сказал, я уже работаю с COM и присоединяюсь к сессии Lotus Notes. Итак, вы в основном говорите мне, что я должен использовать этот материал подписки в LotusScript, а затем импортировать этот код внутри Delphi или как получить доступ к почте из Delphi после того, как я идентифицирую его с LotusScript? – rimes

+0

Извините, я не заметил, что вы уже начали. Во всяком случае, нет, я упомянул LotusScript только потому, что именно так обычно кодируются агенты, и большая часть документации обсуждает с точки зрения их реализации с использованием LS. Лично я никогда не сталкивался с тем, что можно было бы сделать в LS, что также не могло быть сделано через COM. – MartynA

+0

это по крайней мере «полу-хорошая» новость :). Но есть ли у вас ссылка на какой-то код об этих агентах? – rimes

2

Я предполагаю, что вы хотите сделать это на стороне клиента. К сожалению, нет возможности подписаться на события клиента Notes через интерфейсы OLE или COM, представленные в Notes и Domino. Единственный способ сделать это с интерфейсом Notes C APIExtenstion Manager, но это действительно низкоуровневый материал, требующий обширного знания Notes.

Существует, однако, готовый фрагмент кода, созданный с помощью Extension Manager под названием TriggerHappy, который доступен как открытый источник на сайте OpenNTF. Он позволяет настроить его для вызова агентов LotusScript, вызванных событиями. Это (несколько) снижает кривую обучения вокруг этого.

+0

Очень полезно знать, +1 – MartynA

+0

Спасибо за информацию, но я думаю, что это слишком большое усилие для выигрыша :). Я попробую попытку MartyA периодически прочитывать отправленную папку и проверять почту с моим флагом. Спасибо за помощь – rimes

 Смежные вопросы

  • Нет связанных вопросов^_^