Das Versenden geschieht über eine Ansicht-Schaltfläche, die die Mailadresse aus dem aktuell ausgewählten Eintrag aus einer Ansicht zieht:
@If(@Prompt([YESNO]; "Eintrag ausgewählt ?";
"Haben Sie den Eintrag markiert, an dessen 1. Ansprechpartner Sie eine E-Mail senden möchten?");
"";
@Return(""));
@Command([ToolsRunMacro];"(Mail erfassen")
Es kommen dabei folgende Agenten zum Einsatz:
Agent "Mail erfassen" mit Initialize:
%REM
A g e n t \'(Mail erfassen'
*****************************
Aufruf in Schaltfläche [Mailing] in den Ansichten 'Notes Nutzer' und 'Kommunikationsdaten'
===========================================================================
%END REM
Sub Initialize
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim collection As NotesDocumentcollection
Dim pr As NotesDocument
Dim sendto As NotesItem
Dim thema As NotesItem
Dim body As NotesRichTextItem
Set session = New NotesSession
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set pr = db.GetProfileDocument("Mail")
'Prüfen, ob Profile 'Mail' vorhanden
If pr Is Nothing Then
Call ws.EditProfile("Mail")
Exit Sub
End If
'Felder aus Profile holen
Set sendto = pr.GetFirstItem("SendTo")
'Feldinhalte löschen
Set thema = pr.GetFirstItem("Thema")
pr.ReplaceItemValue "Thema", ""
Set body = pr.GetFirstItem("Body")
'Prüfen, ob Body-Feld vorhanden
If Not body Is Nothing Then
Call body.Remove
End If
Set body = New NotesRichTextItem(pr, "Body")
If collection.Count = 0 Then Exit Sub
'Zähler für Fehler (alle markierten Dok. ohne Mailadresse
j% = 0
For i% = 1 To collection.Count
Set doc = collection.GetNthDocument(i%)
'keine Mailadresse vorhanden
If doc.email(0) = "" Then
j% = j% + 1
Goto weiter
End If
'für ersten Eintrag bisheriges SendTo-Feld ersetzen, sonst anfügen
If i% = 1 Then
pr.ReplaceItemValue "SendTo", doc.email(0)
Set sendto = pr.GetFirstItem("SendTo")
Else
Call sendto.Appendtotextlist(doc.email(0))
End If
weiter:
Next
'alle markierten Dok. ohne Mailadresse, dann kein Mail erfassen, sonst Profildok. öffnen
If collection.Count = j% Then
Messagebox "Es kann kein Mail versendet werden, da Sie nur Dokumente markiert haben, die keine Mailadresse beinhalten." ,MB_OK + MB_ICONINFORMATION,"H I N W E I S"
Else
Call ws.EditProfile("Mail")
End If
End Sub
Agent "Mail senden" mit Formel:
REM;
REM " A g e n t \'(Mail senden\'";
REM "******************************";
REM;
REM "Aufruf in Schaltfläche [Senden] der Maske \'Mail\'";
REM "========================================";
REM;
REM "Feldvalidierungen";
@If (Thema = "";
@Do(@Prompt([OK]; "H I N W E I S"; "Das Feld \'Thema\' enthält keinen Eintrag." + @NewLine +
"Bitte geben Sie das Thema des Mails ein !");
@Command([EditGotoField]; "Thema");
@Return(""));
"");
REM;
REM "Mail versenden, Kopie im Postkorb des angemeldeten Users ablegen";
@MailSend(SendTo; ""; @Name([Abbreviate]; @UserName); Thema ; "Anfrage über Notes-DB \'Ansprechpartner\':" + @NewLine; "Body");
@PostedCommand([FileCloseWindow]);
@All
Agent "Mail speichern" mit Formel:
REM;
REM " A g e n t \'(Mail speichern\'";
REM "********************************";
REM;
REM "Aufruf in Schaltfläche [Senden] der Maske \'Mail\'";
REM "========================================";
REM;
REM "Feldvalidierungen";
@If (Thema = "";
@Do(@Prompt([OK]; "H I N W E I S"; "Das Feld \'Thema\' enthält keinen Eintrag." + @NewLine +
"Bitte geben Sie das Thema des Mails ein !");
@Command([EditGotoField]; "Thema");
@Return(""));
"");
REM "Speichern und schließen";
@PostedCommand([FileSave]);
@All
Ich habe schon probiert, mit Field und SetField in den Masken und Agenten zu hantieren, habe selbst in dem für mich fremden Script gehandwerkt (und artig wieder gelöscht, nachdem es nicht funktionierte), aber es klappt nicht.
In der Mailmaske werden die Felder "SendTo", "Body" und "Thema" mitgegeben, das Einfügen eines Feldes "Importance" mit Wert "1" führte leider auch nicht zum gewünschten Ergebnis.