ASP.NET
eMail-Funktionen testen ohne SMTP-Server
Bei der Entwicklung von ASP.NET-Webs soll es schon hin und wieder vorgekommen sein, daß gewisse eMail-Funktionalitäten implementiert werden mussten. So ist wohl hinlänglich bekannt, daß man in der web.config an zentraler Stelle den dafür notwendigen SMTP-Server konfigurieren kann:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="admin@meinewebsite.de">
<network host="smtp.meinewebsite.de" port="25"/>
</smtp>
</mailSettings>
</system.net>
Das Testen gestaltet sich in der Entwicklungsumgebung (Visual Studio und Cassini-Web-Server) aber etwas schwieriger, denn kaum ein Provider läßt es zu, daß von außen eMails in den SMTP-Server gekippt werden. Spam sei Dank...
Der einzig gangbare Weg scheint der über den in den diversen Windows-Version integrierte IIS zu sein, den man dann zum Debuggen verwenden muss. Aber ... es geht ein wenig einfacher, wenn man sich die Attribute des smtp-Tags in der web.config mal ein wenig genauer ansieht. Dort gibt es für das deliveryMethod-Attribut den Wert SpecifiedPickupDirectory.
Dieser ist normalerweise dafür gedacht ein sog. Pickup-Directory zum Beispiel für den SMTP-Server des IIS zu konfigurieren, das dieser als Outbound Queue verwendet, d.h. in dieses Verzeichnis können eMails im eml-Format abgelegt werden, die der SMTP-Server dann abarbeitet.
<system.net>
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="c:\temp\mail\outbound" />
</smtp>
</mailSettings>
</system.net>
Was aber spricht dagegen eine solche Konfiguration zum Testen der ausgehenden eMails zu verwenden? Ist die smtp-Section derartig konfiguriert und verwendet man im Code zum Beispiel das MailMessage-Objekt, so wird, statt einen SMTP-Server zu bemühen, eine eml-Datei in diesen Ordner geschrieben, die man in aller Ruhe analysieren kann.
