zurück zum Artikel

Wie schwer es sein kann, eine E-Mail (automatisiert) zu lesen

Der Dotnet-Doktor

Wieder einmal ein kleiner Erfahrungsbericht aus unserem Projektalltag...

Eine Kunde von uns empfängt regelmäßig Daten von externen Partnern über E-Mail-Anhänge. Dies E-Mails sollen automatisch ausgepackt und in eine Microsoft SQL Server 2005-Datenbank [1] importiert werden. Grundsätzlich ist das Abholen von Nachrichten von einem Exchange Server und das Auspacken von Dateianhängen [2] in wenigen Codezeilen auf Basis der Collaboration Data Objects (CDO) [3] als .NET-basierte Konsolenanwendung realisierbar (siehe Beispiel [4]). CDO ist zwar eine COM-Komponente (cdo.dll), kann aber über einen Runtime Callable Wrapper (RCW) [5] von .NET aus genutzt werden. Eine Herausforderung stellt jedoch die Verwendung innerhalb von SSIS [6] dar.

SQL Server Integration Services (SSIS) [7] ist ein ETL-Serverprodukt (Export, Transform, Load), das mit Microsoft SQL Server 2005 mitgeliefert wird. Microsoft liefert hier – genauso wie bei Windows Workflow Foundation (WF) [8] – keinen vorgefertigten Baustein (Task/Item/Activity) zum Abholen von E-Mails mit.

Grundsätzlich ist es möglich, den oben referenzierten Programmcode der Konsolenanwendung auch in SSIS zu verwenden, da SSIS eine sogenannte "Script Tasks" besitzt, in der man Visual Basic .NET-Code (nicht aber C#-Code oder andere .NET-Sprachen) mit Hilfe von SQL Server Business Intelligence Development Studio [9], einer reduzierten Variante von Visual Studio 2005, hinterlegen kann.

Im Detail gibt es aber mehrere Herausforderungen:

Auf Anfrage sende ich übrigens gerne das SSIS-Paket, mit dem wir die Lösung getestet haben, zu. Bitte nehmen Sie Kontakt über mein Kontaktformular [24] auf.

Übrigens: Microsoft erklärt in einem Knowledge Base-Artikel [25], dass CDO in .NET gar nicht unterstützt werde. Das heißt aber eben nicht, dass es gar nicht geht, sondern nur, dass man sich mit den Herausforderungen nicht an Microsoft wenden kann. Um so mehr ein Grund, diese Erfahrungen hier zu dokumentieren. Mich wundert, dass es dazu im Web bisher keine Informationen gab. In einem SSIS-Vorgang eine E-Mail auszuwerten ist doch gar kein so absurdes Szenario!


URL dieses Artikels:
http://www.heise.de/-354721

Links in diesem Artikel:
[1] http://www.IT-Visions.de/l837.aspx
[2] http://www.IT-Visions.de/c4831.aspx
[3] http://www.IT-Visions.de/l32.aspx
[4] http://www.IT-Visions.de/c4831.aspx
[5] http://www.IT-Visions.de/l177.aspx
[6] http://www.IT-Visions.de/l3714.aspx
[7] http://www.IT-Visions.de/l3714.aspx
[8] http://www.IT-Visions.de/l3773.aspx
[9] http://www.IT-Visions.de/l4829.aspx
[10] http://www.IT-Visions.de/l274.aspx
[11] http://www.IT-Visions.de/l177.aspx
[12] http://www.IT-Visions.de/l296.aspx
[13] http://www.IT-Visions.de/l4829.aspx
[14] http://msdn2.microsoft.com/en-us/library/zwk9h2kb.aspx
[15] http://www.IT-Visions.de/l3038.aspx
[16] http://www.IT-Visions.de/l4829.aspx
[17] http://www.IT-Visions.de/l4832.aspx
[18] http://www.IT-Visions.de/l125.aspx
[19] http://www.IT-Visions.de/l354.aspx
[20] http://www.codeproject.com/useritems/Schedule__Run__SSIS__DTS.asp
[21] http://www.microsoft.com/downloads/details.aspx?FamilyID=e17e7f31-079a-43a9-bff2-0a110307611e&DisplayLang=en
[22] http://msdn2.microsoft.com/en-us/library/ms528104.aspx
[23] http://www.microsoft.com/downloads/details.aspx?FamilyID=e17e7f31-079a-43a9-bff2-0a110307611e&DisplayLang=en
[24] http://www.it-visions.de/kontakt
[25] http://support.microsoft.com/kb/813349