Frage

Ich arbeite eine eigenständige c # Desktop-Anwendung, die Dokumente sendet und dann importiert sie aus Outlook, wenn sie zurückgeschickt werden. Die Anwendung nimmt die E-Mails von einem bestimmten Ordner sie verarbeitet und speichert dann die Absendernamen und andere Sachen in eine Datenbank.

Das funktioniert gut für Outlook 2003 und 2007, die die SenderEmailAddress Eigenschaft hat. Jedoch Outlook 2000 und XP diese Eigenschaft nicht und werden nicht konsequent zurückkehren name@domain.com. Ich reiche Unterstützung für diese Versionen.

ich gefunden habe, dass eine Bibliothek mit dem Namen Outlook Redemption dieses Problem lösen wird, aber ich in .net entwickle und möchte wirklich Kundenregister schriftlich zu vermeiden. Ich fand auch MAPI33 einen .NET-Wrapper um MAPI aber es ist unklar, aus den Foren, ob es noch unterstützt werden wird.

Würden alle Hinweise zu schätzen wissen, wie zu einer .Net-Alternative zur Redemption DLL oder einen Ansatz zu der Möglichkeit, konsequent eine E-Mail-Adresse in Outlook-Versionen abrufen.

Vielen Dank

AbsFabs

Epilog: Ich landete mit einer Lösung aus diesem Artikel http://support.microsoft.com/kb/324530. Es besteht eine Antwort zu schaffen, und dann Extrahieren der Antwort des erzeugten MailItem zu adressieren. Es funktionierte gut für E-Mails über das Internet gesendet werden und wird durch Exchange Server-Tests.

Auch fand diese auf meinen Reisen http://anoriginalidea.wordpress.com/2008/01/11/getting-the-smtp-email-address-of- ein Austausch-sender-of-a-Mail-Item-from-Ausblick-in-VBNET-vsto / es erscheint eine Berührung mit einbezogen zu werden. Dies könnte meinen Plan B umfassen, wenn meine bestehende Implementierung Tests nicht überleben.

Vielen Dank für Ihre Rückmeldung

AbsFabs

ich schließlich mit Redemption aufgespult. Ausgezeichnetes Werkzeug für den Job. Mein Problem war mit mit der DLL, wenn mein App installiert wurde registrieren. Da meine App in Dotnet geschrieben braucht es nichts zu registrieren. Ich war in der Lage rund um das DLL-Registrierung Problem Registrierungsfrei COM mit zu arbeiten.

Vielen Dank für Ihre Inspiration.

War es hilfreich?

Lösung

Ich bin mit der Outlook Redemption Lösung in einem Produktionscode C #. Es funktioniert wunderbar. Mit ihm können Sie die SenderID einer Mail-Nachricht erhalten (IRDOMail), und von dort aus können Sie das GetAddressEntryFromID () -Methode des IRDOSession-Objekts verwenden.

Andere Tipps

Während ein ähnliches Problem bei der Arbeit, wir beschlossen, den netMAPI Weg zu gehen, das einige Probleme verursacht hat.

Das Hauptproblem ist, dass MAPI seinen eigenen Speicher verwaltet wird, wie .NET Bedeutung hat, die gelegentlich (wir haben rund 300 Menschen in unserem Haus Software) wäre es unsere Anwendung zum Absturz bringen, die ‚Fehler melden‘ Fenster zu erzeugen Dialog anstatt unser eigener Bug-Tracking-Dialog. Dies wurde durch die beiden jeweils anderen Speicherhaufen zu überschreiben.

Wie wir einen Exchange-Server verwenden, haben wir einige die Forschung getan haben, und entdeckten, dass, wenn Sie den MAPI-Code in einer VB6 app schreiben, würde es seinen eigenen Speicherbereich hat und somit nicht das .NET-Heap überschreibt.

Es ist eine ziemlich langatmige Art und Weise, Dinge zu tun, aber bisher haben wir keine Probleme haben, und Hunderte (wenn nicht Tausende) von E-Mail werden von unseren Mitarbeitern jeden Tag gesendet.

Eine gute Nachricht ist, dass ou auf dem richtigen Weg sind mit Tracking die richtigen Schnittstellen nach unten. Die schlechte Nachricht ist, dass 2000 und XP sind sehr schlecht in .NET unterstützt, da sie vor .NET kamen und nur mit 2003 war sie eine wirkliche Anstrengung, die COM-Arbeit in .NET zu erhalten.

Sie Lösung für diese Version 2000 und XP wird sich aus den richtigen COM-Schnittstellen aufzuspüren und sie um sich selbst gewickelt wird. Ich habe dies viele Male für diese Version von Outlook zu tun hatte, und es ist nie schön. So viel Glück.

Redemption kann ohne Installation in der Registry verwendet werden - können Sie verwenden RedemptionLoader in C #, VB.Net, Delphi und C ++.

//tell the app where the 32 and 64 bit dlls are located
//by default, they are assumed to be in the same folder as the current assembly and be named 
//Redemption.dll and Redemption64.dll.  
//In that case, you do not need to set the two properties below
RedemptionLoader.DllLocation64Bit = @"c:\SourceCode\Redemption\redemption64.dll";
RedemptionLoader.DllLocation32Bit = @"c:\SourceCode\Redemption\redemption.dll";
//Create a Redemption object and use it
RDOSession session =  RedemptionLoader.new_RDOSession();
session.Logon(Missing.Value, Missing.Value,  Missing.Value, Missing.Value, Missing.Value,  Missing.Value);

Ich habe eigentlich nie diese verwendet, aber man konnte das Outlook versuchen Collaboration Data Objects (CDO). Sie verwendeten ein Add-on sein, dass Sie mit Outlook installieren können, aber jetzt sind sie zur Verfügung gestellt werden getrennt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top