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

Email versenden mit AspMail

Geschrieben von: Christoph Wille
Kategorie: Komponenten

This printed page brought to you by AlphaSierraPapa

Das berühmt-berüchtigte "Anfrageformular" kommt auf (fast) jeder Internetsite vor, und wird meist so gelöst, daß an die zuständige Personen eine Email mit den vom User eingegeben Formularwerten abgeschickt wird. Auch wir verwenden auf dieser Seite ein solches Formular, und ich werde heute aufdecken, was Email-technisch dahinter steckt.

Zum Aufwärmen, hier einmal der HTML-Code eines einfachen (also unserem) Anfrageformular:

<FORM ACTION="<%=Request.ServerVariables("SCRIPT_NAME")%>" 
	METHOD=POST>
<INPUT TYPE=TEXT NAME="Anfragesteller" VALUE="" SIZE=40>
<INPUT TYPE=TEXT NAME="Emailadresse" VALUE="" SIZE=40>
<TEXTAREA NAME="Anfrage" COLS=40 ROWS=10></TEXTAREA>
<INPUT TYPE=SUBMIT VALUE="Abschicken">
</FORM>
Ich habe alle Formatierungen herausgenommen, drinnengeblieben ist nur das, was für das Funktionieren des Formulars lebenswichtig ist. Ein ASP-Trick des tägichen Lebens ist hier auch versteckt: die ACTION des FORMs wird dynamisch mit der SCRIPT_NAME Variable befüllt - der Dateiname des aktuellen Formulars (oder ASP Datei). Und das Umbenennen des Formulars wird somit nicht mehr zur Katastrophe!

Jetzt aber zu Wichtigerem; dem Code zum Abschicken einer Email. Von uns gerne verwendet wird die AspMail Komponente von ServerObjects, da sie sehr lange am Markt, schnell und zuverlässig ist (am Schluß des Artikels habe ich eine Liste von alternativen Komponenten zusammengetragen).

Warum ich nicht die mit IIS mitgelieferte CDONTS (Collaboration Data Objects NT Server) verwende? Die funktionieren nur dann, wenn am Webserver auch ein SMTP Server installiert ist - und zwar der vom NT Option Pack. Nicht gerade praktikabel im täglichen Einsatz.

Der Benutzer hat also das Formular abgeschickt - hier nun der Code, der am Server abläuft.

If Request.ServerVariables("Content_Length")>0 Then
 Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
 Mailer.FromName = "ASPGERMAN Forum"
 Mailer.FromAddress = "webmaster@alphasierrapapa.com"
 Mailer.RemoteHost = "pop3.bitshop.com"
 Mailer.Recipient = "christophw@alphasierrapapa.com"
 Mailer.Subject = "Anfrageformular"
	
 strBody = "Von: " & Request.Form("Anfragesteller") & vbCRLF
 strBody = strBody & "Email: " & Request.Form("Emailadresse") & vbCRLF
 strBody = strBody & "Anfrage: " & Request.Form("Anfrage") _
   & vbCRLF & vbCRLF
 strBody = strBody & "IP: " & Request.ServerVariables("REMOTE_HOST") _
   & vbCRLF
 Mailer.BodyText = strBody
 
 If Mailer.SendMail Then
  Response.Write "Ihre Anfrage wurde erfolgreich weitergeleitet!"
 Else
  Response.Write "W&auml;hrend der Bearbeitung Ihrer Anfrage ist" & _
   " ein Fehler aufgetreten. Bitte wenden Sie sich an " & _
   "webmaster@alphasierrapapa.com."
 End If
End If
Zuallererst checke ich, ob überhaupt Daten geschickt wurden (CONTENT_LENGTH liefert die Länge der geposteten Daten). Danach erstelle ich das Objekt, und setze diverse Eigenschaften (Name von, Emailadresse von, SMTP Server, Empfänger, Betreff). Nach diesen Initialisierungen muß ich nur noch den Text der Email erstellen, und zwar bediene ich mich hier einer lokalen Variable, die ich mit den Daten des Benutzers zusammenstelle. Zusätzlich schicke ich mir noch die IP Adresse des Computers, von dem die Anfrage aus gepostet wurde (der Surfcomputer also).

Abgeschickt wird die Email mit SendMail, das einen Boolschen Wert ob des Erfolgs liefert. Abhängig davon kann man eine Erfolgsmeldung oder Informationsmeldung mit Fehlerbeschreibung ausgeben. So einfach kann das Versenden von Emails in ASP Seiten sein!

Einen letzten Pluspunkt der AspMail Komponente möchte ich noch erwähnen: es gibt sie in der Ausführung AspQMail, einer Mail Queuing Komponente. Das bedeutet, die Email wird nicht sofort geschickt, sondern in eine Queue gesteckt, die bei Freiwerden von Rechnerresourcen die Emails abarbeitet und schickt (als NT Service implementiert). Kann ich absolut für Sites empfehlen, die eine hohe Last auszuhalten haben.

This printed page brought to you by AlphaSierraPapa

Verwandte Artikel

ACT MetaMailer - Mails verschicken leicht gemacht
http:/www.aspheute.com/artikel/20021028.htm
Das Versenden von Emails selbst programmieren
http:/www.aspheute.com/artikel/20001009.htm
Emails senden mit CDONTS
http:/www.aspheute.com/artikel/20000515.htm
Emails versenden mit ASPEmail
http:/www.aspheute.com/artikel/20010219.htm
Html Emails mit Dundas Mailer verschicken
http:/www.aspheute.com/artikel/20010625.htm
Mit PGP verschlüsselte e-Mails senden
http:/www.aspheute.com/artikel/20000912.htm

Links zu anderen Sites

AspIN - Liste der Emailkomponenten
http://www.aspin.com/index/default.asp?tree=aspin/components/email
AspMail
http://www.serverobjects.com/products.htm#Aspmail

 

©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.