Domino 9 und frühere Versionen > ND6: Entwicklung
Zentraler oder dezentrale Agent(en) fürs Einsammeln von Mails aus Mailboxen
koehlerbv:
Sicher ist nur das Auslesen des Domino Directorys.
Bernhard
MaVo:
--- Zitat von: koehlerbv am 26.04.07 - 10:33:16 ---Sicher ist nur das Auslesen des Domino Directorys.
--- Ende Zitat ---
Vielen Dank Bernhard für den Hinweis.
Werde als Basis den KB-Artikel Sample LotusScript code to change ACL rights for all mail file owners verwenden und mein Glück in der Programmierung versuchen.
MaVo:
Ich habe den Agenten wie folgt erstellt....
* Anzahl aller Mailboxen (Benutzer wie Mail-in-DB) aus dem Domino Adressbuch ermitteln
* Daraus Array-Größe festlegen
* Abspeichern aller Mailboxendateinamen (im Format mail\xxx.nsf) in einem Array
* Über eine Schleife greife ich auf die Mailboxen zu und verschiebe die Mails aus den Ordnern Spam bzw. Ham in die vorgesehenen Mailboxen
Dieser Agent wird nach dem Vorschlag von umi ...
--- Zitat von: umi am 25.04.07 - 14:25:33 ---Der Einfachheit halber würde ich den Agent zentral starten.
--- Ende Zitat ---
aus einer DB heraus gestartet.
Doch beim Verschieben der Mail (Call doc.CopyToDatabase(spamDb)) aus dem Ordner in die Mailbox bekomme ich folgende Fehlermeldung "Type mismatch".
spamDB ist ausserhalb von Schleife gesetzt.
Egal ob der Agent manuell oder automatisch gestartet wird.
Warum?
--- Code: ---Set maildb= session.Getdatabase(servername, databasename(counter))
'Spam-Mails verschieben
Print "Mailbox " & databasename(counter) & " geöffnet!"
Ordner = "-Spam\Spam"
Set view = maildb.GetView(Ordner)
If view Is Nothing Then
Print "Fehler: kein Spam-Ordner in Mailbox " & databasename(counter) & " vorhanden!"
Call agentmailer("Ham-Spam Agent hat Fehler gemeldet! " &"Fehler: kein Spam-Ordner in Mailbox " & databasename(counter) & " vorhanden!")
Else
'Verarbeitung der Mails
Print "Spam-Ordner geöffnet!"
Call view.Refresh
view.AutoUpdate = False
Set vc = view.AllEntries
If vc.count > 0 Then
For intviewcounter = 1 To vc.Count
Set ve = vc.GetNthEntry(intviewcounter)
If ve.IsDocument Then
Set doc = ve.Document
If Instr(doc.Subject(0), "{Spam?}")=0 And doc.HasItem("SMTPOriginator") Then
Call doc.CopyToDatabase(spamDb)
Print "Spam: " + doc.subject(0) + " --> erfolgreich übertragen"
End If
End If
Next
Call vc.RemoveAll(True)
End If
--- Ende Code ---
Kann mir bitte ein Programmierer auf die Sprünge helfen. Wie gesagt hab wenig Erfahrung in LS-Programmierung.
m3:
Na dann wird spamDb nicht gesetzt sein.
Debugger anwerfen oder Print/MsgBox Statement einbauen und nachschauen.
Und/Oder Code pfosten!
BTW: Du solltest checken, ob "maildb" gesetzt ist, bevor du weiter machst.
Driri:
Was sagt denn der Debugger an der Stelle ? Sind doc und spamDb sauber ?
Wobei ich eher auf ein Problem mit spamDb tippe. Hast Du geprüft, ob die Datenbank offen ist ?
Noch ein Tipp für die Schleife durch die ViewEntryCollection : Benutz lieber GetFirstEntry vor der Schleife und dann jeweils GetNextEntry innerhalb der Schleife. GetNthEntry zieht mehr Performance.
Also so in etwa :
Set ve = vc.GetFirstEntry
While Not (ve Is Nothing)
...
Set ve = vc.GetNextEntry(ve)
Wend
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln