Можно ли обновить запись в Lotus Notes по электронной почте? - PullRequest
0 голосов
/ 25 февраля 2009

Можно ли обновить запись в Lotus Notes по электронной почте, как постер? Если это возможно, как я могу это сделать? Спасибо.

Ответы [ 2 ]

2 голосов
/ 25 февраля 2009

Довольно просто.

Вам нужно создать в почтовой базе данных агент, который будет обрабатывать входящую почту (для этого потребуется Domino Designer и соответствующие привилегии в почтовой БД).

В зависимости от ваших требований вы можете запускать агента периодически (например, один раз в час) или на конкретное событие (например, при получении новой почты).

Все агенты, которые я когда-либо писал, написаны на LotusScript (вроде VBA), и они могут сканировать документы в базе данных, проверяя состояние, заголовки и т. Д., Чтобы решить, что делать.

Ниже следует одно недавнее письмо, которое я написал для кого-то. При вызове он в основном проходит через InBox, проверяя каждый документ на предметный заголовок, содержащий «qwertyuiop», и создает ответное электронное письмо обратно отправителю, содержащему ту же тему с добавленным «SUCCESS».

Затем он перемещает документ из папки InBox в папку нежелательной почты. Этот конкретный агент запускался каждые 60 минут, поскольку немедленного ответа не требовалось. Вы должны быть в состоянии забрать намерение из кода.

Sub Initialize
    Dim s As New notessession
    Dim db As notesdatabase
    Dim view As NotesView
    Dim doc As NotesDocument
    Dim olddoc As NotesDocument
    Dim subj As String
    Dim newdoc As NotesDocument

    Set db = s.CurrentDatabase
    Set view = db.GetView("($InBox)")
    If Not view Is Nothing Then
        Set doc = view.GetFirstDocument
        While Not doc Is Nothing
            Set olddoc = doc
            Set doc = view.GetNextDocument(doc)
            subj = olddoc.GetFirstItem("subject").Text
            If Instr(subj, "qwertyuiop") > 0 Then
                Set newdoc = New NotesDocument(db)
                newdoc.SendTo = olddoc.GetFirstItem("inetfrom").Text
                newdoc.subject = subj & " SUCCESS"
                newdoc.form = "Memo"
                Call newdoc.send(True,True)
                Call olddoc.RemoveFromFolder( "($InBox)")
                Call olddoc.PutInFolder( "junk")
            End If
        Wend
    End If
End Sub

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

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

Это оставлено в качестве упражнения для читателя. То, что я вам дал, должно быть достаточно для начала (задайте еще один вопрос, когда вы поиграли с этим).

1 голос
/ 30 июня 2009

Очень просто. В Notes вы можете настроить любую базу данных как цель для электронной почты. Он получает свой собственный идентификатор электронной почты (например, productupdates@acme.com). Затем вы пишете агент, который запускается «когда приходит новая электронная почта». Новые документы находятся в коллекции session.currentdatabase.unprocesseddocuments. Ваша электронная почта, конечно, должна содержать что-то, что позволяет вам выяснить, какой документ обновлять. Notes использует внутренний NotesDocumentUniqueID в качестве первичного ключа, но я думаю, вы бы предпочли выбрать бизнес-поле. Используя NotesMimeEntry, вы можете получить доступ к содержимому в формате HTML в своем электронном письме, если вы отправили форму по электронной почте или около того.

...