Hallo zusammen,
ich weiß gar nicht, ob ich hier richtig bin, aber ich würde gerne einfach einen Agenten spenden wollen, falls den auch jemand anderes nutzen möchte.
Der Agent löscht SPAM-Mails, wenn die SPAM Mails die Soft Deletion Time erreicht haben.
Falls es irgendwo ein "Code-Sammelbecken" gibt freue ich mich über einen Hinweis und pack das gerne dort hin.
Viele Grüße
Flo
%REM
' Aufgabe des Agenten ist es den Junk-Mail-Ordner in einem Postfach zu leeren.
' Die Löschfrist für SPAM-Mail ergibt sich dabei aus der in der DB eingestellten
' Soft-Deletion Time in den Database Properties.
'
' Ist keine Soft-Deletion-Time definiert erfolgt auch keine Löschung von SPAMs.
'
' Darf frei verwendet, verändert, kopiert, etc. pp. werden. Verwendung erfolgt auf
' eigene Gefahr.
%END REM
Option Public
Option Declare
Dim s As NotesSession
Dim currDb As NotesDatabase
Dim currA As NotesAgent
Sub Initialize
On Error GoTo Errorhandler
Set s = New NotesSession
Set currA = s.currentAgent
Set currDb = s.currentDatabase
Dim agentRunTimeStart As New NotesDateTime("") ' Laufzeitmessung
Dim agentRunTimeEnd As New NotesDateTime("") ' Laufzeitmessung
Call agentRunTimeStart.Setnow()
Print "Starte Agent '" & currA.Name & "' in Datenbank '" & currDb.Title & "'"
Call AgentRun()
' Ende des Agenten
Call agentRunTimeEnd.Setnow()
Print "Beende Agent '" & currA.Name & "' in Datenbank '" & currDb.Title & "' (Laufzeit: " & CStr(agentRunTimeEnd.Timedifference(agentRunTimeStart)) & " Sekunden)"
Exit Sub
Errorhandler:
MsgBox "Kritischer Fehler bei Agentenlauf in Datenbank '" & currDb.Title & "' (" & currDb.Filepath & ") Agent '" & currA.Name & "': " & Error & " (" & Err & ") in Zeile " & CStr(Erl)
End Sub
Sub AgentRun
On Error GoTo errorhandler
Print "[Starte Löschungen der JunkMails]"
Dim junkFolder As NotesView
Dim softDeletionHours As Integer
Dim softDeletionLimit As New NotesDateTime("")
Set junkFolder = currDb.getView("JunkMail")
If junkFolder Is Nothing Then
Print "[INFO] SPAM-Ordner konnte nicht gefunden werden, breche ab ..."
Exit Sub
End If
If junkFolder.Allentries.Count = 0 Then
Print "[INFO] Keine SPAM-Mails vorhanden, breche ab ..."
Exit Sub
End If
If Not currDb.Getoption(dbopt_softdelete) Then
Print "[INFO] Soft Deletions sind nicht aktiv, breche ab ..."
Exit Sub
End If
softDeletionHours = currDb.Undeleteexpiretime
Call softDeletionLimit.Setnow()
Call softDeletionLimit.Adjusthour((softDeletionHours * -1))
Print "Löschfrist: " & softDeletionHours & "h"
Print "-> SPAM-Mails, welche vor dem " & CStr(softDeletionLimit.Lslocaltime) & " empfangen wurden, werden gelöscht."
Print "Anzahl SPAM-Mails im SPAM-Ordner: " & junkFolder.Allentries.Count
Dim junkMail As NotesDocument
Dim junkMailIter As NotesDocument
Dim countDeletedJunks As Long
Set junkMail = junkFolder.Getfirstdocument()
While Not junkMail Is Nothing
Set junkMailIter = junkFolder.getNextDocument(junkMail)
' Prüfen, ob Löschfrist erreicht / überschritten wurde
If softDeletionLimit.Timedifference(s.Createdatetime(CStr(junkMail.Created))) > 0 Then
countDeletedJunks = countDeletedJunks + 1
Call junkMail.Remove(True)
End If
Set junkMail = junkMailIter
Wend
Print "-------- Abschluss --------"
Print "--> Es wurden " & countDeletedJunks & " SPAM-Mails gelöscht. <--"
Print "[Beende Löschungen der JunkMails]"
Exit Sub
errorhandler:
MsgBox "Fehler in AgentRun(): " & Error & " (" & Err & ") in Zeile " & CStr(Erl)
End Sub