2016-08-29 2 views
1

Ich habe ein Formular mit Winform zum Senden von E-Mail erstellt. Mein Outlook 2010-Fenster wird geöffnet und funktioniert einwandfrei. Aber auf meinem Freund Maschine, es funktioniert nicht, weil er Outlook hat 2013 Ist es möglich, eine Sende-Mail zu erstellen, die sowohl auf Outlook 2010 und 2013. Im Folgenden arbeiten werden, ist der Code, den ich verwende:Implementieren Sie Senden von Mail aus Winform mit Outlook 2010 und 2013 C#

var outlookApp = new Outlook.Application(); 

Outlook.MailItem mailItem = outlookApp.CreateItem(Outlook.OlItemType.olMailItem); 

mailItem.Subject = this.txtTitle.Text; 
mailItem.HTMLBody = this.HtmlText; 
mailItem.HTMLBody = mailItem.HTMLBody + ReadSignature(); 
mailItem.Importance = Outlook.OlImportance.olImportanceLow; 
mailItem.Display(true); 

Darüber hinaus ist die COM-I verwenden Microsoft Outlook 14.0 Object und ich weiß, für Outlook 2013 ist es Microsoft Outlook 15.0 Object

+0

Sie können [email] (http://stackoverflow.com/a/32767496/3110834) im HTML-Format senden und einige Bilder enthalten. Was ist die Voraussetzung, die Sie dazu bewegt, Outlook-Interop zum Senden von E-Mails zu verwenden? –

+0

Der Grund ist, weil ich von der Winform die Bilder und den Titel basierend auf Benutzereingabe vom Formular direkt einstellen muss. Außerdem muss ich die Mail über Outlook senden, da ich die Firmen-E-Mail-Adresse usw. verwenden muss. –

+0

Alle diese können ohne Probleme mit ['SmtpClient'] (https://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient (v = vs.110) .aspx) durchgeführt werden . Schauen Sie sich die [link] (http://stackoverflow.com/a/32767496/3110834) an, die ich im ersten Kommentar oder [diese] geteilt habe (http://stackoverflow.com/a/36926380/3110834). –

Antwort

1

Wenn Sie Version Unabhängigkeit haben wollen, nachdem Sie einen Verweis auf das gewünschte Büro Interop hinzugefügt Assemly, zum Beispiel Microsoft.Office.Interop.Outlook.dll, klicken Sie mit der rechten Maustaste auf die DLL-Referenz und wählen Sie Eigenschaften und im Eigenschaftenraster , setzen Sie Embed Interop Types auf true.

Für weitere Informationen:

Walkthrough: Embedding Type Information from Microsoft Office Assemblies in Visual Studio

Wenn Sie Typinformationen in einer Anwendung einbetten, die COM Objekte verweist, können Sie die Notwendigkeit für eine primäre Interop-Assembly (PIA) beseitigen. Darüber hinaus ermöglicht Ihnen die eingebettete Typinformation Versionsunabhängigkeit für Ihre Anwendung zu erreichen. Das heißt, Ihr -Programm kann geschrieben werden, um Typen aus mehreren Versionen einer COM -Bibliothek zu verwenden, ohne dass für jede Version ein spezifischer PIA erforderlich ist. Dies ist ein häufiges Szenario für Anwendungen, die Objekte aus Microsoft Office-Bibliotheken verwenden. Einbetten von Informationen ermöglicht das gleiche Build von ein Programm mit verschiedenen Versionen von Microsoft Office auf verschiedenen Computern ohne die Notwendigkeit, entweder das Programm oder die PIA für jede Version von Microsoft Office neu bereitzustellen.

+0

Standardmäßig ist die Einbettung Interop Type auf True gesetzt und immer noch hat es nicht funktioniert. Ich musste Outlook 2013 installieren und es funktioniert jetzt. Sobald die Implementierung abgeschlossen ist, werde ich prüfen, ob sie abwärtskompatibel ist. –

+1

Zusätzlich zu [MSDN] (https://msdn.microsoft.com/en-us/library/mt632251.aspx) Link, den ich geteilt habe, werfen Sie auch einen Blick auf diesen Artikel, finden Sie es nützlich [Painless Office Interop mit Visual C#] (http://www.claudiobernasconi.ch/2014/02/13/painless-office-interop -unter Verwendung-visuell-c-sharp /) –

Verwandte Themen