Hallo,
ich möchte gerne mit C# und OLE automation classes Mailabanhänge zu einem memo hinzufügen und anschließend dieses memo anzeigen. Da ich auf die UI-Objekte von Notes zugreife (memo anzeigen) kann ich das nicht mit COM-Aufrufe machen.
Ich habe schon sehr lange und intensiv recherchiert und kann jetzt auch ein memo erstellen und anschließend anzeigen (mit Hilfe von late binding) siehe code unten. Was ich noch nicht geschafft habe ist einen Anhang zu dem erstellen memo hinzuzufügen.
Ich würde mich sehr freuen wenn jemand das schon mal gemacht hat und mir meinen Code ergänzen könnte:
// Root ole automation Klassen holen über late binding
Type NotesSession = Type.GetTypeFromProgID("Notes.NotesSession");
Type NotesUIWorkspace = Type.GetTypeFromProgID("Notes.NotesUIWorkspace");
Object sess = Activator.CreateInstance(NotesSession);
Object ws = Activator.CreateInstance(NotesUIWorkspace);
// Mailsystem-Eigenschaften setzen
String mailServer = (String)NotesSession.InvokeMember("GetEnvironmentString", BindingFlags.InvokeMethod, null, sess, new Object[] { "MailServer", true });
String mailFile = (String)NotesSession.InvokeMember("GetEnvironmentString", BindingFlags.InvokeMethod, null, sess, new Object[] { "MailFile", true });
NotesUIWorkspace.InvokeMember("OpenDatabase", BindingFlags.InvokeMethod, null, ws, new Object[] { mailServer, mailFile });
Object uidb = NotesUIWorkspace.InvokeMember("GetCurrentDatabase", BindingFlags.InvokeMethod, null, ws, null);
Object db = NotesUIWorkspace.InvokeMember("Database", BindingFlags.GetProperty, null, uidb, null);
Type NotesDatabase = db.GetType();
// Memo erstellen
Object uidoc = NotesUIWorkspace.InvokeMember("ComposeDocument", BindingFlags.InvokeMethod, null, ws, new Object[] { mailServer, mailFile, "Memo", 0, 0, true });
Type NotesUIDocument = uidoc.GetType();
NotesUIDocument.InvokeMember("FieldSetText", BindingFlags.InvokeMethod, null, uidoc, new Object[] { "EnterSendTo", "max1@web.de" });
NotesUIDocument.InvokeMember("FieldSetText", BindingFlags.InvokeMethod, null, uidoc, new Object[] { "EnterCopyTo", "musterman@web.de" });
NotesUIDocument.InvokeMember("FieldSetText", BindingFlags.InvokeMethod, null, uidoc, new Object[] { "Subject", "Betreff" });
NotesUIDocument.InvokeMember("FieldSetText", BindingFlags.InvokeMethod, null, uidoc, new Object[] { "Body", "MailText" });
//
???Anhänge hinzufügen
??
//
// Mail anzeigen
String windowTitle = (String)NotesUIDocument.InvokeMember("WindowTitle", BindingFlags.GetProperty, null, uidoc, null);
Microsoft.VisualBasic.Interaction.AppActivate(windowTitle);
Ich konnte auch den Inhalt einer Datei in den Body vom memo schreiben siehe folgende zwei Zeilen, ich will aber die Datei als Anhang und nicht im Text:
object[] Arguments = { (System.Object)"Microsoft Word", (System.Object)@"c:\test.doc" };
object doc = NotesUIWorkspace.InvokeMember("Import", BindingFlags.InvokeMethod, null, uidoc, Arguments);
Vielen Dank im Voraus
Markus