1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

Как установить пометку о прочтении письма?

Тема в разделе "Lotus - Программирование", создана пользователем BDmV, 22 апр 2010.

  1. BDmV

    BDmV Гость

    Репутация:
    0
    Есть агент, который из помеченных писем вытаскивает приатаченные файлы, расшифровывает их, снимает подпись и складывает в определённый каталог. (агент срабатывает при выборе пункта меню, т.е. пускается вручную)
    Сам скрип работает как надо, но...
    После перемещения обработанных писем в папку "Обработанные" у папки "Входящие" не меняется кол-во непрочитанных писем, и с самих писем не снимается пометка о прочтении. Метод NotesDocument.Save() тоже никакого эффекта не даёт.
    Подскажите, плиз, где что в этом коде не так и куда и что прописать, чтоб статус "непрочитано" менялся на "прочтено".
    Код:
    Sub Initialize
    Const inbox$ = "($Inbox)"	
    Const Done$ = "Обработанные"
    Dim o As Notesembeddedobject	
    Dim InBoxCollection As NotesDocumentCollection	
    Dim docInboxFile As NotesDocument
    Dim docInboxFilene As NotesDocument	
    Dim file As String
    Dim filename As String
    Dim tmp As String
    Dim path As String
    Dim dc As Variant
    Dim m As Variant
    Dim m1 As Variant
    Dim m2 As Variant
    Dim leng As Integer
    Dim wks As New NotesUIworkspace
    Dim ViewU As NotesUIView
    Dim xx As Integer
    Dim Session As New NotesSession
    Dim tmpd As String*256
    
    Set ViewU = wks.currentview
    Set dc=CreateObject("DigtCrypto.PKCS7Message") 
    
    leng = GetTempPath(256, tmpd)
    tmp$ = Left$(tmpd, leng)
    
    path$ =""		 ' Куда складывать файлы после обработки
    path = Session.GetEnvironmentString("detachpathMF", True)
    If path$="" Then
    Messagebox "Не существует записи в notes.ini, поэтому файлы буду складывать в" & tmp$
    path$=tmp$
    End If
    
    If ViewU Is Nothing Then 
    xx = Messagebox("Агент можно запустить только из папки 'Входящие'" , 16, "Внимание!!!")
    Exit Sub
    End If
    Set InBoxCollection = ViewU.Documents.Parent.UnprocessedDocuments 
    Set 	docInboxFile = InBoxCollection .GetFirstDocument 	
    'получаем коллекцию документов
    If (docInboxFile Is Nothing) Then
    Messagebox "Необходимо выбрать документыдля разбора."
    Exit Sub
    End If	
    While Not (docinboxfile Is Nothing)
    Set docInboxFilene= InBoxCollection.GetNextDocument(docInboxFile)
    If docInboxFile.HasEmbedded Then
    Forall DocItem In docInboxFile.Items
    If docitem.name = "$FILE" Then
    Set o = docInboxFile.GetAttachment(docitem.values(0))
    If ((Mid$(DocItem.Values(0),1,3) <> "ATT") And (Mid$(DocItem.Values(0),1,3) <>"FILESEG")) Then
    file$ = path$ +"\"+ DocItem.Values(0)
    filename$ = Dir$(file,0)
    If Ucase(filename) = Ucase(DocItem.Values(0)) Then
    Messagebox("Файл " & file & " уже существует")
    Else
    Call o.ExtractFile(tmp + DocItem.Values(0))
    m=dc.Load(3, tmp+ DocItem.Values(0))	 ' Загрузка шифрованного файла в поток				
    Set m1 =dc.Decrypt()	 ' Расшифровка файла в потоке
    m2=dc.Save(0, 0, path$+"\"+ DocItem.Values(0)) 'Сохранение файла из потока со снятием подписи
    End If
    End If
    End If
    End Forall
    docInboxFile.Save(False, False)  ' НИ КАКОГО ЭФФЕКТА
    docInboxFile.RemoveFromFolder(Inbox$)
    docInboxFile.PutInFolder(Done$)
    ViewU.View.Refresh
    Else
    Messagebox "Прикреплённые файлы отсутствуют."
    End If
    Set 	docInboxFile = docInboxFilene
    Wend
    If Not ViewU Is Nothing Then Call ViewU.DeselectAll()	
    
    End Sub
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Репутация:
    0
    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    У Save есть третий параметр.
     
  3. Xalet

    Xalet Well-Known Member

    Репутация:
    0
    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    notesDocument.Save( force, createResponse [, markRead ] )
     
  4. BDmV

    BDmV Гость

    Репутация:
    0
    Пробывал.
    docInboxFile.Save(False, False, True) тоже не помогает. :) Такое ощущение, что атачи вытаскиваются без открытия письма и поэтому Save ничего и не сохранияет. Хотя я могу и ошибаться, т.к. в Лотусовском скриптоводстве я полный лох. И в данном случае я просто взял чужой скрипт и доделал его так, чтоб атачи проходили через КриптоАрм.
     
Загрузка...

Поделиться этой страницей