• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы BDmV
  • Дата начала
B

BDmV

Есть агент, который из помеченных писем вытаскивает приатаченные файлы, расшифровывает их, снимает подпись и складывает в определённый каталог. (агент срабатывает при выборе пункта меню, т.е. пускается вручную)
Сам скрип работает как надо, но...
После перемещения обработанных писем в папку "Обработанные" у папки "Входящие" не меняется кол-во непрочитанных писем, и с самих писем не снимается пометка о прочтении. Метод 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
 
B

BDmV

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!