Удалить письма с определенной темой

k85

Well-Known Member
11.10.2011
158
0
#1
Необходимо удалить все письма с определенной темой как у всех пользователей, которым письмо отправили, так и у всех , кому его переслали + если переслали, то удалить и из отправленных
Код:
Sub Initialize
Dim DbDir As New NotesDbDirectory("название сервера")
Dim TmpDb As NotesDatabase
Set TmpDb = DbDir.GetFirstDatabase(TEMPLATE_CANDIDATE)
While Not TmpDb Is Nothing
On Error Resume Next
Call TmpDb.Open("", "")
If TmpDb.IsOpen Then
 
Dim collection As NotesDocumentCollection
Namesubj="тест, который отправлен мне! "
Set collection = TmpDb.Search({(Subject="} & Namesubj &  {")}  Or  {") & (Subject="} & "Fw: " & Namesubj &  {")} Or  {") & (Subject="} & "На: " & Namesubj &  {")} Or  {") & (Subject="} & ">>: " & Namesubj &  {")} ,  Nothing,0)
 
If collection.Count > 0 Then
Set maildoc = collection.GetFirstDocument
Do Until maildoc Is Nothing
Set nextDoc = collection.GetNextDocument(maildoc)
Call maildoc.RemovePermanently(True)
 
Set maildoc= nextDoc
Loop
 
End If
 
End If
Set TmpDb = DbDir.GetNextDatabase
Wend
 
End Sub
запускаю от админа с фулл правами. Даже если у пользователя 100% нет письма он переходит
Set maildoc = collection.GetFirstDocument
Do Until maildoc Is Nothing
...
 
Последнее редактирование модератором:

savl

Well-Known Member
Lotus team
28.10.2011
2 116
157
32
#2
@k85, формулу корректно для поиска задайте, она неверная:
попробуйте эту: {@Contains(Subject;"} & Namesubj &{")}
 

Baneslaer

Well-Known Member
25.01.2011
123
0
37
Киев
#4
Лень искать ошибку в формуле, но посоветовал бы еще добавить в формулу промежуток дат. С какого по какое число искать такие письма. Кроме того для контроля, создал бы простую базейку, в которой создавал доки с инфой сколько найдено писем в базе и сколько удалено. Такое помогает при отслеживании различных ошибок.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 203
24
38
Киев
ToxaRat.com
#5
да уж красавцы, достаточно одно слово общее указать чтобы всем наполовину ПЯ опустошить :)