Benutzer mit den meisten Antworten
E - Mail mit Outlook versenden

Frage
-
Hallo Forum,
versuche gerade e-Mail´s über Outlook zu versenden. Habe auch schon einiges gefunden.
mit "Microsoft.Office.Interop.Outlook" gelingt mir es auch Mail´s an Outlook zu übergeben.
Aber ich möchte das eigentlich unsichtbar im Hintergrund machen, ohne das sich Outlook öffnet und die Rechtschreibprüfung startet.
Hat da jemand Erfahrung ?
Danke Gruß Roland
Antworten
-
Hallo Roland,
Und das es mit Outlook "unsichtbar" geht ist bewiesen, mit VFox hab ich es so schon mal gemacht.
Wenn es in Deinem Code nur darum geht, das Mail-Fenster nicht anzuzeigen, solltest Du die Anweisung
lo_Item.Display(false);
auskommentieren. Zu der Warnung:
Warnung 1 Mehrdeutigkeit zwischen der Microsoft.Office.Interop.Outlook._MailItem.Send()-Methode und der Nichtmethode "Microsoft.Office.Interop.Outlook.ItemEvents_10_Event.Send". Eine Methodengruppe wird verwendet. C:\Dokumente und Einstellungen\Roland\eigene dateien\visual studio 2010\Projects\Anmeldung\Anmeldung\Form1.cs 260 25 Anmeldung
Die bekommst Du, weil das Outlook.MailItem Objekt, sowohl eine Send() Methode besitzt, wie auch durch die implementierte Ereignisschnittstelle ein Send Ereignis. Darüber stolpert der Compiler und gibt die Warnung CS0467 aus. Die kannst Du entweder hinnehmen, oder wenn sie Dich sehr stört auch umgehen, indem Du explizit die reine MailItem Schnittstelle ohne Ereignisse und somit ohne Doppeldeutigkeit ansprichst:
((Microsoft.Office.Interop.Outlook._MailItem)lo_Item).Send();
Du kannst
Du kannst Dir Tipparbeit ersparen, indem Du die Anweisung
using Microsoft.Office.Interop;
an den Beginn der Codedatei einfügst. Dann kannst Du statt "Microsoft.Office.Interop.Outlook.MailItem", einfach "Outlook.MailItem" schreiben.
PS : Wie fügst Du die Hardcopy´s ein. Wenn ich das versuche kommt so was wie in der letzten Nachricht raus.
Ich schreibe einige meiner Beiträge hier über einen Newsreader, genauer Thunderbird und greife über die Community NNTP Bridge auf dieses Forum zu. Damit kann ich Codeblöcke selber formatieren und eben auch ohne Formatierung aus Visual Studio hier einfügen. Im Webeditor steht hierfür die Funktion "Codeblock einfügen" rechts außen beim Editor-Fenster zur Verfügung.
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de- Als Antwort markiert Thorsten Dörfler Samstag, 31. Juli 2010 16:36
Alle Antworten
-
Hallo Forum,
anbei etwas Code zu meinem Problem.
Den Code habe ich so als Basis in einem anderen Forum gefunden und funktioniert eigentlich ganz gut, bis auf das es nicht im Hintergrund geht. Ausserdem kommt noch folgende Meldung :
Warnung 1 Mehrdeutigkeit zwischen der Microsoft.Office.Interop.Outlook._MailItem.Send()-Methode und der Nichtmethode "Microsoft.Office.Interop.Outlook.ItemEvents_10_Event.Send". Eine Methodengruppe wird verwendet. C:\Dokumente und Einstellungen\Roland\eigene dateien\visual studio 2010\Projects\Anmeldung\Anmeldung\Form1.cs 260 25 Anmeldung
NameSpace lo_NSpace; Microsoft.Office.Interop.Outlook.MAPIFolder lo_Folder; Microsoft.Office.Interop.Outlook.Application lo_OutAPP; Microsoft.Office.Interop.Outlook.MailItem lo_Item; lo_OutAPP = new Microsoft.Office.Interop.Outlook.Application(); lo_NSpace = lo_OutAPP.GetNamespace("MAPI"); lo_Folder = lo_NSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderSentMail); lo_Item = (Microsoft.Office.Interop.Outlook.MailItem)lo_Folder.Items.Add(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem); lo_Item.To ="xxx@yyy.de"; lo_Item.Subject ="Kopfp xxxxxx"; lo_Item.Body ="Text xxxxx"; lo_Item.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatRichText; lo_Item.Display(false); lo_Item.Send(); lo_Item = null;
Kann mir da jemand helfen ?
Danke Gruß Roland
- Bearbeitet Robert Breitenhofer Donnerstag, 24. Juni 2010 07:24 Formatierung
-
Hallo Roland,
versuche gerade e-Mail´s über Outlook zu versenden. Habe auch schon einiges gefunden.
mit "Microsoft.Office.Interop.Outlook" gelingt mir es auch Mail´s an Outlook zu übergeben.
Aber ich möchte das eigentlich unsichtbar im Hintergrund machen, ohne das sich Outlook öffnet und die Rechtschreibprüfung startet.
Warum möchtest Du mit Outlook senden, wenn Du nichts von Outlook brauchst und auch nicht sehen möchtest? Es ist nicht möglich Mails mit Outlook zu versenden, ohne dass der Anwender den Zugriff hierfür auf Outlook extra per Dialog freigibt.
Schau Dir mal die Klassen SmtpClient und MailMessage im System.Net.Mail Namespace an. Damit kannst Du E-Mails ohne Outlook und Benutzeraktion versenden. Einziger Nachteil: Dein Anwender muss einmalig seine E-Mail Konfiguration festlegen.
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de -
Hallo Thorsten,
E-Mail mit Smtp Versenden das hab ich schon . Geht auch ohne Probleme.
Aber ich versuche gerade über die Arbeitsstation die Mail´s über Outlook zu versenden. Nicht jeder hat die Möglichkeit über SMTP oder die Berechtigung. Ausserdem ist das nur der erste Schritt. Ich möchte als nächstes die E-Mail´s aus Outlook, aus einem definierten Eingang auslesen und die angehängten Dateien automatisch verarbeiten.
Und das es mit Outlook "unsichtbar" geht ist bewiesen, mit VFox hab ich es so schon mal gemacht.
Gruß Roland
PS : Wie fügst Du die Hardcopy´s ein. Wenn ich das versuche kommt so was wie in der letzten Nachricht raus.
-
Hallo Roland,
Und das es mit Outlook "unsichtbar" geht ist bewiesen, mit VFox hab ich es so schon mal gemacht.
Wenn es in Deinem Code nur darum geht, das Mail-Fenster nicht anzuzeigen, solltest Du die Anweisung
lo_Item.Display(false);
auskommentieren. Zu der Warnung:
Warnung 1 Mehrdeutigkeit zwischen der Microsoft.Office.Interop.Outlook._MailItem.Send()-Methode und der Nichtmethode "Microsoft.Office.Interop.Outlook.ItemEvents_10_Event.Send". Eine Methodengruppe wird verwendet. C:\Dokumente und Einstellungen\Roland\eigene dateien\visual studio 2010\Projects\Anmeldung\Anmeldung\Form1.cs 260 25 Anmeldung
Die bekommst Du, weil das Outlook.MailItem Objekt, sowohl eine Send() Methode besitzt, wie auch durch die implementierte Ereignisschnittstelle ein Send Ereignis. Darüber stolpert der Compiler und gibt die Warnung CS0467 aus. Die kannst Du entweder hinnehmen, oder wenn sie Dich sehr stört auch umgehen, indem Du explizit die reine MailItem Schnittstelle ohne Ereignisse und somit ohne Doppeldeutigkeit ansprichst:
((Microsoft.Office.Interop.Outlook._MailItem)lo_Item).Send();
Du kannst
Du kannst Dir Tipparbeit ersparen, indem Du die Anweisung
using Microsoft.Office.Interop;
an den Beginn der Codedatei einfügst. Dann kannst Du statt "Microsoft.Office.Interop.Outlook.MailItem", einfach "Outlook.MailItem" schreiben.
PS : Wie fügst Du die Hardcopy´s ein. Wenn ich das versuche kommt so was wie in der letzten Nachricht raus.
Ich schreibe einige meiner Beiträge hier über einen Newsreader, genauer Thunderbird und greife über die Community NNTP Bridge auf dieses Forum zu. Damit kann ich Codeblöcke selber formatieren und eben auch ohne Formatierung aus Visual Studio hier einfügen. Im Webeditor steht hierfür die Funktion "Codeblock einfügen" rechts außen beim Editor-Fenster zur Verfügung.
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de- Als Antwort markiert Thorsten Dörfler Samstag, 31. Juli 2010 16:36
-
Hallo Roland,
Was Du willst ist nicht einfach.
Ich würde ein VSTO Outlook Add-in schreiben, das über ein named pipe mit der Hauptanwendung kommuniziert. Die Anwendung verschickt z.B. ein XmlDocument mit den E-Mail-Daten (Adressat, Betreff, Text usw.) und das Outlook Add-in kümmert sich um das Erstellen und Versenden der E-Mails. (Da das VSTO Outlook Add-in im Prozessraum von Outlook geladen wird und eine CAS-Vertrauensstellung bereits bei der Installation des Add-ins erfolgt, wird Outlook keine Fragen stellen. Und Outlook kann auch unsichtbar gestartet werden)
NamedPipeServerStream Class
http://msdn.microsoft.com/en-us/library/system.io.pipes.namedpipeserverstream.aspx
NamedPipeClientStream Class
http://msdn.microsoft.com/en-us/library/system.io.pipes.namedpipeclientstream.aspxAber ich würde mir Thorstens Idee, über SMTP zu e-mailen noch einmal überlegen, bevor ich mich in so ein Projekt stürze.
Marcel
-
Hallo Marcel,
diese ADDs gibt es schon ne ganze weile sogar kostenlos.
Schau mal unter http://www.mapilab.com/de/outlook/security/
Da brauchst Du nichts selber programmieren. Und seit der letzten Outlook Version gibte es unter Extras die Möglichkeit vertrauenswürdige "Einlieferer" zu hinterlegen.
Gruß Roland
-
Hallo Roland,
Die Sicherheitswarnungen meinte ich gar nicht, die lassen sich ganz einfach und ohne Add-ins umgehen.
Mein Vorschlag war, dass Du das Versenden der E-Mail aus dem Outlook-Prozess über ein VSTO Add-in machst und nicht direkt aus Deiner Anwendung. Wenn Du zufällig solche Add-ins kennst, würde ich Dich bitten, einige Links hier zu posten. Würde mich echt interessieren.
Gruß
Marcel