Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: markus_mgd am 29.06.11 - 10:11:51
-
Liebe Gemeinde,
ich verzweifele daran eine Mail zu schließen ohne das Fenster "Mail senden" zu erhalten. Ich hoffe es gibt da eine Lösung.
Worum geht es?
Es soll mittels Agent alle markierten Mails im Eingang einer DB beantwortet werden, wobei alle den gleichen Antworttext (Standardantwort) erhalten sollen. Die Auswahl dieses Texts erfolgt über eine Liste von Memo-Vorlagen (Stationery). Am Ende wird das Feld ZuVersenden auf 1 gesetzt, dessen Exisitenz ein zweiter Agent in regelmäßigen Abständen prüft und ggf. die aufgelaufenen Mails verschickt. Das klappt auch alles soweit ganz perfekt, jedoch bleibt am Ende immer noch eine Mail geöffnet, welche noch nicht den Text aus der Vorlage enthält. Ich habe versucht diese Mail über das NotesUIDocument newdoc zu schließen, doch dabei bekomme ich immer das Fenster "Mail senden" mit den Buttons "Senden und Speichern", "Nur Senden" usw. angezeigt.
Und genau diese Fenster soll nicht auftauchen. Bitte um Hilfestellung.
Beste Grüße
Markus
Der Code folgt:
Sub Initialize
Dim uiws As New NotesUIWorkspace
Dim replytodoc As NotesUIDocument
Dim newdoc As NotesUIDocument
Dim Vorlage As NotesDocumentCollection
Dim doc2 As NotesDocument
Dim db As NotesDatabase
Dim session As New NotesSession
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set noteCursorDoc = session.currentdatabase.createdocument
Set Vorlage = uiws.Picklistcollection(PICKLIST_CUSTOM, False, db.server, db.filepath, "Stationery", "Auswahl der Mailvorlage", "Bitte Vorlage aus Liste auswählen")
Set noteCursorDoc = Vorlage.getfirstdocument
Set StandardAntwort = noteCursorDoc.getfirstitem("Body")
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument()
While Not(doc Is Nothing)
Set replytodoc = uiws.editdocument(False,doc)
Set newdoc = uiws.ComposeDocument("","","Reply with history")
Call newdoc.save
Call replytodoc.Close(True)
Set doc2 = newdoc.document
Set OriginalMail = doc2.getfirstitem("Body")
Set body2 = New NotesRichTextItem(doc2,"Body2")
Call body2.appendrtitem(OriginalMail)
Call doc2.removeitem("body")
Set rt = New NotesRichTextItem(doc2,"Body")
Call rt.appendrtitem(StandardAntwort)
Call rt.appendrtitem(body2)
Call doc2.removeitem("body2")
doc2.ZuVersenden="1"
doc2.save True, True
doc2.saveoptions="0"
'Bis hierhin OK
' Das Problem ist die Mail, welche manuell geschlossen werden muss
Call newdoc.Close(True)
Call session.UpdateProcessedDoc(doc)
Set doc = collection.GetNextDocument(doc)
Wend
End Sub
-
Warum machst Du das über das Frontend und nicht über das Backend?
Bernhard
-
An der Umsetzung von Frontend in Backend hatte ich mir schon vorher mal die Zähne ausgebissen. Meine Kenntnisse sind leider ziemlich schlecht was Frontend / Backend angeht. Mein Code ist aus verschiedenen Codes zusammenkopiert.
Vielleicht kannst du mir sagen, was ich dann genau umstellen muss. Ich wäre dir sehr dankbar.
Markus
-
@Bernhard
Also vielleicht noch mal deutlicher gefragt.
Wie kann ich denn
Set newdoc = uiws.ComposeDocument("","","Reply with history")
von Frontend auf Backend umstellen?
Markus
-
Das wäre eine Kombination aus
- NotesDatabase.CreateDocument
- erforderliche Items belegen
- Rückantworttext im Body erzeugen (NotesRichtextItem.AppendText etc.)
- "Ankleben" des Ursprungs-Mailbodys (NotesRichtextItem.AppendRTItem)
HTH,
Bernhard
-
Danke für deine Antwort. Ich werde mal mein Glück versuchen.
Bis dann
Markus
-
im Frontend hat das wirklich nichts zu suchen... Aber wenn Du das mal wirklich brauchst, dann experimentier mal mit den Feldern SaveOptions = "0" bzw. MailOptions = "0"...
Gruss
-
:) Danke Tode!
Ich habe doch über Frontend lösen müssen und einfach nur
doc2.MailOptions="0"
und
Call newuidoc.Refresh
eingebaut.
Ist sicherlich nicht schön, aber genau das was ich brauche.
Markus