Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Emails mit ASP.NET versenden

Geschrieben von: Christoph Wille
Kategorie: ASP.NET

Etwas, das sich heutzutage auf jeder Website findet, ist ein Email-Anfrageformular. Das wird sich wahrscheinlich auch nicht so schnell ändern, deswegen werde ich heute vorstellen, wie man Emails in ASP.NET verschickt: von ganz einfach bis hin zu HTML Mails und Attachments.

Voraussetzung um den Sourcecode dieses Artikels verwenden zu können ist eine Installation des Microsoft .NET Framework SDK's auf einem Webserver. Weiters setze ich voraus, daß der Leser die Programmiersprache C# zu einem gewissen Grad beherrscht - es finden sich etliche Artikel auf diesem Server, um das notwendige Wissen zu erlernen.

Die schnellste Variante

Es gibt immer eine Variante, die man in die Rubrik "Quick and Dirty" einreihen kann. Mit dieser möchte ich auch diesmal anfangen, weil man damit die Serverkonfiguration relativ einfach austesten kann, ohne sonstige Seiteneffekte einkalkulieren zu müssen (SimpleMail.aspx).

<% @Page Language="C#" %>
<% @Import Namespace="System.Web.Mail" %>
<%
string strTo = "christophw@sleeper.Dev.AlfaSierraPapa.Com";
string strFrom = "webmaster@aspheute.com";
string strSubject = "Hi Chris";

SmtpMail.Send(strFrom, strTo, strSubject,
  "A real nice body text here");

Response.Write("Email was queued to disk");
%>

Das Ergebnis - wenn alles funktioniert hat - sieht wie der folgende Screenshot aus:

Was passiert nun eigentlich im Script? Der gesamte Emailsupport befindet sich System.Web.Mail Namespace. In diesem Namespace findet sich die Klasse SmtpMail, deren statische Send Methode vier Parameter annehmen kann:

SmtpMail.Send(From, To, Subject, BodyText);

Wie gesagt sehr simpel, allerdings hat sie eines mit den funktionaleren Emailversandoptionen gemeinsam: der SMTP Server muß der lokal installierte SMTP Service des IIS sein - man kann keinen anderen verwenden. In diesem Aspekt ist der Emailsupport von ASP.NET ident mit den CDONTS von ASP 3.0.

Eine HTML Email verschicken

Lassen wir nun diese doch zu einfache Mailmethode hinter uns, und sehen uns ein sehr funktionales Objekt an: die MailMessage Klasse. Diese "kapselt" alles, was man sich von einer Email wünscht - das folgende Beispiel demonstriert die Verwendung anhand einer kurzen HTML Email (SimpleMailMessage.aspx).

<% @Page Language="C#" %>
<% @Import Namespace="System.Web.Mail" %>
<%
MailMessage msgMail = new MailMessage();

msgMail.To = "christophw@sleeper.Dev.AlfaSierraPapa.Com";
msgMail.Cc = "webmaster@sleeper.Dev.AlfaSierraPapa.Com";
msgMail.From = "webmaster@aspheute.com";
msgMail.Subject = "Hi Chris, another mail";

msgMail.BodyFormat = MailFormat.Html;
string strBody = "<html><body><b>Hello World</b>" +
   " <font color=\"red\">ASP.NET</font></body></html>";
msgMail.Body = strBody;

SmtpMail.Send(msgMail);

Response.Write("Email was queued to disk");
%>

Das sieht vom Code her doch gleich viel besser aus, und vor allem hat man deutlich mehr Optionen als bei der ersten Send Methode. Zuerst setzt man die To, From und Subject Eigenschaften des MailMessage Objekts, und dann setzt man BodyFormat auf den Wert Html aus der MailFormat Enumeration. Und schon kann man eine HTML-formatierte Email verschicken.

Erwähnenswert ist, daß alle Overloads der Send Methode keinen Rückgabewert ob des Erfolgs des Emailversands haben. Der Grund hierfür ist, daß die Emails einfach als Datei in den Pickup Folder des Inetpub Verzeichnisses geschrieben werden, von wo aus der SMTP Service sie liest und verschickt. Fehlerhafte Mails (Versandfehler) finden sich ebenfalls als Dateien, diesmal aber im Bad Folder.

Als Nachtrag möchte ich jetzt noch den Screenshot der Email liefern.

Attachments versenden

Mit gewissen Mailkomponenten sind Attachments ein wenig abenteuerlich zu verwenden. Mit .NET ist es nur ein weiteres, einfach zu verwendendes Objekt: MailAttachment. Der folgende Code demonstriert, wie man das Attachment an eine MailMessage anhängen kann (MailAttachment.aspx).

<% @Page Language="C#" %>
<% @Import Namespace="System.Web.Mail" %>
<%
MailMessage msgMail = new MailMessage();

msgMail.To = "christophw@sleeper.Dev.AlfaSierraPapa.Com";
msgMail.From = "webmaster@aspheute.com";
msgMail.Subject = "Attachment Test";

msgMail.BodyFormat = MailFormat.Text;
msgMail.Body = "Check out the attachment!";
msgMail.Attachments.Add(new MailAttachment("c:\\temp\\annual-report.pdf"));

SmtpMail.Send(msgMail);

Response.Write("Email was queued to disk");
%>

Die Zeile

msgMail.Attachments.Add(new MailAttachment("c:\\temp\\annual-report.pdf"));

könnte man auch wie folgt programmieren:

MailAttachment maAttach = new MailAttachment("c:\\temp\\annual-report.pdf");
IList msgAttachments = msgMail.Attachments;
msgAttachments.Add(maAttach);

Den Punkt, den ich damit illustrieren will ist der, daß die Attachments über ein IList Interface (findet sich im System.Collections Namespace) angegriffen werden - und dieses die Add Methode zur Verfügung stellt. Dieses IList Interface kann man auch zum Aufzählen oder Löschen von Attachments verwenden. Und ein Nachtrag zum Konstruktor von MailAttachment ist auch fällig: man könnte den Encoding Type festlegen (was allerdings selten notwendig werden dürfte).

Einen Screenshot bin ich auf noch schuldig - so sieht das Attachment in Outlook Express aus. Geringer Programmieraufwand, große Wirkung (wenn man etwas sinnvolles versendet).

Schlußbemerkung

Das war's für den heutigen Crashkurs in Emailversand in ASP.NET. Ich habe die Objekte vorgestellt, die man verwenden kann, um mit Bordmitteln seinen Kunden - oder sich selbst - über den Webserver eine Nachricht zukommen zu lassen.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

ACT MetaMailer - Mails verschicken leicht gemacht
Das Versenden von Emails selbst programmieren
Einstieg in Visual Studio.NET - die erste Webanwendung mit Visual C#
Emails mit ASP.NET und VB.NET versenden
Emails versenden mit ASPEmail
Html Emails mit Dundas Mailer verschicken
Vergleich von DataGrid, DataList und Repeater-Control - was verwende ich wann?

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Eine weitere sehr hilfreiche Resource ist das deutsche ASP.NET Wiki, das als zentrale Anlaufstelle für Tips, Tricks, Know How und alles Nützliche was man in seinem Alltag als (ASP).NET-Entwickler so braucht und entdeckt gedacht ist.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.