Hallo Leute,
erst mal sorry für den blöden Betreff, mir ist aber einfach nichts besseres eingefallen. Auch wusste ich nicht genau, wo nach ich suchen sollte, weshalb ich entsprechend auch nichts gefunden habe.
Wir haben einen Agenten, der eine eingehende eMail bearbeitet und dann weiterleitet. Der Code sieht folgendermaßen aus:
Option Public
Sub Initialize
Dim session As New NotesSession
Dim db_cur As NotesDatabase
Dim view As NotesView
Dim fwmail As NotesDocument
Dim doc As NotesDocument
Dim doc2 As NotesDocument
Dim itemTemp As notesitem
Dim sViewName As String
'------------------------------------------------
'Konstanten
Const mailEmpf = "test@acme.com"
Const zielOrdner = "Versendet" 'In diesen Ordner werden die Mails nach dem Versenden verschoben
'------------------------------------------------
Print "wird gestartet"
'Aktuelle Datenbank holen
Set db_cur = session.currentdatabase
' In dieser Ansicht sind die Dokumente abgelegt
' Das kann auch ein Ordner sein
sViewName = "($Inbox)"
'Ansicht öffnen
Set view = db_cur.getView(sViewName)
Call view.refresh
'Ansicht aktualisieren
' erstes Dokument auswählen
Set doc = view.getFirstDocument
' Solange wie in der Ansicht Dokumente zu finden sind, wird die Schleife durchlaufen
While Not(doc Is Nothing)
'nächtes Dokument auswählen, damit am Ende der Schleife das aktuelle gelöscht bzw. verschoben werden kann
Set doc2 = view.getNextDocument(doc)
'Mail-Doc erstellen
set fwmail = New NotesDocument (db_cur)
'Felder aus der Mail kopieren
Set itemTemp = doc.Getfirstitem("Subject")
Call fwmail.Copyitem(itemTemp, "")
Set itemTemp = doc.Getfirstitem("Body")
Call fwmail.Copyitem(itemTemp, "")
'Empfänger einfügen
Call fwmail.replaceItemvalue("sendto", mailEmpf)
'Systemfeld setzen (damit die gesendete Mail nicht gespeichert wird)
Call fwmail.replaceItemvalue("$SaveOptions", "0")
'Dokument versendet
Call fwmail.send(False)
' Dokument in den ZielOrdner verschieben
Call doc.RemoveFromFolder("($Inbox)")
Call doc.PutInFolder(zielOrdner, True)
'Nächstes Dokument
Set doc = doc2
Wend
Print "wird beendet"
End Sub
Das funktioniert an sich auch alles prima, das große Problem ist jedoch, dass die letzte eMail, die in dem Postfach eingegangen ist, um ca. 0 Uhr nochmals gesendet wird.
Hat jemand eine Idee, woran das liegen könnte bzw. wie wir das abstellen können?
Ich bin für jeden Hinweis dankbar!
Viele Grüße
Steffen
Ich hatte heute ein ähnliches Problem ... wenn ich Dokumente in einen Ordner verschiebe funktioniert der "Durchgang" über view.GetNextDocument(doc) nicht richtig.
Ich habe das jetzt ganz anders gelöst. Ich merke mir die Universal-Ids der zu bearbeitenden Dokumente und gehe diese anschließend separat durch:
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim docList List As string
Set db = session.Currentdatabase
Set view = db.Getview("$Inbox")
Set doc = view.Getfirstdocument()
While Not (doc Is Nothing)
If doc.Erledigt(0) = "1" Then
docList(doc.Universalid) = "1"
End if
Set doc = view.Getnextdocument(doc)
Wend
ForAll id In docList
Set doc = db.Getdocumentbyunid(ListTag(id))
doc.PutInFolder "Erledigt"
doc.RemoveFromFolder "$Inbox"
End ForAll
End Sub