Eine E-Mail erzeugen und anzeigen.
Zuerst binden wir Outlook ein:
using Outlook = Microsoft.Office.Interop.Outlook;
Vorher sollten wir die Referenz darauf dem Projekt hinzufügen:
Anschließend können wir eine E-Mail erzeugen, ein Beispiel mit Anhang:
var app = new Outlook.Application(); Outlook.MailItem mailItem = app.CreateItem(Outlook.OlItemType.olMailItem); //Empfänger festlegen, mit ; getrennt mailItem.To = "andy.dunkel@ekiwi.de"; mailItem.Subject = "Betreff"; //das Format der E-Mail, z.B. Plain oder HTML mailItem.BodyFormat = Outlook.OlBodyFormat.olFormatPlain; //der Textinhalt, ansonsten gibt es auch noch den HTML-Body mailItem.Body = "Ich bin ein Textinhalt"; //Anhang anfügen mailItem.Attachments.Add("c:\\datei.log", Outlook.OlAttachmentType.olByValue, Type.Missing, Type.Missing); //E-Mail anzeigen mailItem.Display(false);
Fertig, die E-Mail wird angezeigt, der Anwender kann diese ergänzen und dann auch abschicken.
Moin,
die Vorgehensweise funktioniert einwandfrei. Habe damit intern für unsere Abteilung ein kleines „Ticketsystem“ geschrieben. Jetzt würde ich noch gerne einen Log dafür machen. Gibt es eine Möglichkeit, dass Outlook einen Wert zurückgibt in dem steht ob die E-Mail tatsächlich abgeschickt wurde?
Mit freundlichen Grüßen
Hagen
Hallo Hagen, nicht das ich wüsste. Wenn Du mehr mit E-Mail machen willst, kannst Du Dir mal https://github.com/jstedfast/MailKit anschauen.
Hängt jetzt davon ab, wie es technisch bei Dir umgesetzt ist. Für MailKit bietet sich ein SMTP-Server für den Mailversand an.
Gruß
Andy
Leider steigt das Programm in der Zeile
Outlook.MailItem mailItem = app.CreateItem(Outlook.OlItemType.olMailItem);
mit Fehler aus:
System.InvalidCastException: „Das COM-Objekt des Typs „Microsoft.Office.Interop.Outlook.ApplicationClass“ kann nicht in den Schnittstellentyp „Microsoft.Office.Interop.Outlook._Application“ umgewandelt werden
Verweise auf Outlook ist gesetzt, Outlook ist auch geöffnet.
Irgendeine Idee?
Du könntest das Outlook.MailItem mailItem = app.CreateItem(Outlook.OlItemType.olMailItem); mal als „var mailItem“ deklarieren und schauen ob es dann weiter geht.
Gruß
Andy