Ich stehe vor einer Herausforderung. In einem Vorgang (hier mein uidoc) der mit einer Eingangsmail verbunden wurde, soll in einen Feld eine Ausgangsmail aus verschiedenen Komponenten zusammen gebaut werden, das wurde mit folgendem Script erfolgreich umgesetzt.
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim s As New NotesSession
Dim db As NotesDatabase, dbMail As NotesDatabase, dbInfo As NotesDatabase
Dim viewAP As NotesView, viewAP2 As NotesView,viewKunstname As NotesView
Dim CollAP As NotesDocumentCollection
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument, docMail As NotesDocument, replyMail As NotesDocument, docProfile As NotesDocument
Dim docKunstname As NotesDocument
Dim Ansicht As String
Dim itemVorlageMailtext As NotesItem, itemVorlageMailtext2 As NotesItem, itemVorlageMailtext3 As NotesItem
' Ende der Deklaration von Variablen
ws.ReloadWindow
ws.ViewRefresh
Set db=s.CurrentDatabase
Set uidoc=ws.CurrentDocument
Set doc=uidoc.Document
Set docProfile=db.GetProfileDocument("DBProfile")
Servername=docProfile.Mails1Server(0)
DBname=docProfile.Mails1DB(0)
Set dbMail=s.GetDatabase(Servername,DBName)
ServernameInfo=docProfile.Info1Server(0)
DBnameInfo=docProfile.Info1DB(0)
Set dbInfo=s.GetDatabase(ServernameInfo,DBNameInfo)
Ansicht="(MailVorlagen XY)"
Ansicht2="(MailVorlagen)"
doc.Save True, False
ws.ReloadWindow
Call uidoc.save
uidoc.EditMode=False
'Zuordnung des Kunstnamen
Set viewKunstname = db.GetView("(Mailmeldenamenauswahl)")
Commonname = s.CommonUserName
Set docKunstname = viewKunstname.GetDocumentByKey(Commonname)
Kunstvorname = docKunstname.Kunstvorname(0)
Kunstnachname = docKunstname.Kunstnachname(0)
'Auswahl der Vorvorlage und Abhänger
Set viewAP2 = db.GetView (Ansicht2)
Set docAP2 = viewAP2.GetDocumentByKey("Leer")
Set itemVorlageMailtext2 = docAP2.GetFirstItem("VorlageMailtext")
Set docAP3 = viewAP2.GetDocumentByKey("Abhänger XY")
Set itemVorlageMailtext3 = docAP3.GetFirstItem("VorlageMailtext")
'Feste Auswahl der Vorlage
Set viewAP = dbInfo.GetView (Ansicht)
Set docAP = viewAP.GetDocumentByKey("Vorlage AB")
Set itemVorlageMailtext = docAP.GetFirstItem("VorlageMailtext")
Set rt = doc.GetFirstItem("Ausgangsmail")
doc.BenutzteVorlage = docAP.VorlageThema
' Hinzufügen der Vorvorlage
Call rt.appendrtitem(itemVorlageMailtext2)
' Zusammensetzen der Anrede
Call rt.AppendText( "Hallo " )
Call rt.AppendText( doc.FirstName(0) )
Call rt.AppendText( "," )
Call rt.AddNewLine(2)
' Hinzufügen der Mailvorlage
Call rt.appendrtitem(itemVorlageMailtext)
Call rt.AddNewLine(1)
' Hinzufügen des Kunstnamen
Call rt.AppendText(Kunstvorname)
Call rt.AddNewLine(3)
' Hinzufügen des Abhängers
Call rt.appendrtitem(itemVorlageMailtext3)
' Hinzufügen der Ursprungsmail, falls vorhanden
If doc.MailID(0) <> "" Then
Set docMail = dbMail.GetDocumentByUNID(doc.Mailid(0))
Set replyMail = docMail.CreateReplyMessage(False)
Set replyBody = replyMail.getfirstitem("Body")
Call rt.AddNewLine(2)
Call rt.appendrtitem(replyBody)
End If
doc.Save True, False
uidoc.Close(True)
Set uidoc=ws.EditDocument( ,doc)
ws.ReloadWindow
uidoc.save
Call uidoc.GotoField("Ausgangsmail")
End Sub
Danach arbeiten die Mitarbeiter im Uidoc weiter und können zum Beispiel im Feld "Ausgangsmail" Text mittels Tastatur hinzufügen und etwas aus dem Zwischenspeicher (Quelle ist hier das Internet) einfügen.
Jetzt soll aus dem uidoc heraus die "Ausgangsmail" verschickt werden.
Das erfolgt mit folgendem Script:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim s As New NotesSession
Dim db As NotesDatabase, dbMail As NotesDatabase
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument, docMail As NotesDocument, replyMail As NotesDocument, docProfile As NotesDocument
Dim item As NotesItem, ReplyItem As NotesItem, BodyItem As NotesItem, TempItem As notesitem
Dim rtitem As NotesRichTextItem
Dim user As String
Set db=s.CurrentDatabase
Set uidoc=ws.CurrentDocument
Set doc=uidoc.Document
Call uidoc.save
doc.Save True, False
ws.ReloadWindow
ws.ViewRefresh
Call uidoc.save
uidoc.EditMode=False
uidoc.Close(True)
' Hier folgt der eigentliche Mailversand
Set docProfile=db.GetProfileDocument("DBProfile")
Servername=docProfile.Mails1Server(0)
DBname=docProfile.Mails1DB(0)
Set dbMail=s.GetDatabase(Servername,DBName)
If doc.MailID(0) = "" Then
Messagebox "Mail-ID ist nicht vorhanden - Wurde eine Mail eingebunden?"
Exit Sub
End If
Set docMail = dbMail.GetDocumentbyunid(doc.MailID(0))
docMail.VorgangsID = doc.ID(0)
Call docMail.Save(True,True)
Set replyMail = New NotesDocument(dbMail)
replyMail.Mailoptions = ""
replyMail.Form = "Memo"
replyMail.PostedDate = Now()
replyMail.ComposedDate = Now()
replyMail.DeliveredDate = Now()
replyMail.EncryptOnSend = False
replyMail.From = "XXX"
replyMail.Principal = "XXX"
replyMail.Owner = "XXX"
replyMail.Reply = "XXX"
replyMail.Replyto = "XXX"
user = s.UserName
replyMail.AltFrom = User
replyMail.VorgangsID = doc.ID(0)
replyMail.MaiID = doc.MailID(0)
replyMail.Subject = "Antwort: " & doc.MailThema(0)
replyMail.SendTo = doc.MailReplyAddress(0)
replyMail.EnterSendTo = doc.MailReplyAddress(0)
replyMail.BlindCopyTo = doc.AnzMailAddressBCC(0)
replyMail.EnterBlindCopyTo = doc.AnzMailAddressBCC(0)
replyMail.ZuVersenden = "1"
Set item = doc.GetFirstItem( "Ausgangsmail" )
Call item.CopyItemToDocument(replyMail,"Body")
Call replyMail.Save(True,True)
' Das Feld Ausgangsmail wieder auf leer setzen
Set Item = doc.ReplaceItemValue("Ausgangsmail","")
doc.MailVerschoben = "Ja"
Call doc.Save( False, True )
' Die Originalmail verschieben in angegebenen Ordner ohne den Ordner zu erstellen
Call docMail.PutInFolder("Erledigte Mails",False)
Call docMail.RemoveFromFolder( "($Inbox)" )
' Neu Öffnen um Speichern zu können
Set uidoc=ws.EditDocument( ,doc)
ws.ReloadWindow
Call uidoc.GotoField("Ausgangsmail")
Call uidoc.save
End Sub
Jetzt können die Mitarbeiter im uidoc noch etwas verändern und zu guter Letzt das Uidoc speichern und schließen. Das ganze funktionert nur, wenn der Text, der zusätzlich in das Feld Ausgangsmail geschrieben wird, normal per Tastatur eingegeben wird oder reiner Text aus einem bestehenden Notesdokument einkopiert wird. Hat man zusätzlich Text in das Feld einkopiert, zum Beispiel aus dem Internet, oder auch aus Word oder dem Editor gibt es beim letzten Speichern den Hinweis auf ein Speicher- /Replizierkonflikt, der verhindert werden soll. Was läuft da falsch mit dem Feld oder dem Inhalt des Feldes? Hat jemand eine Idee. Bin schon seit Wochen auf der Suche nach dem Fehler.
Hat jemand eine Idee an welcher Stelle ich forschen soll?