Email versenden mit AspMail
Geschrieben von: Christoph Wille 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ährend der Bearbeitung Ihrer Anfrage ist" & _ " ein Fehler aufgetreten. Bitte wenden Sie sich an " & _ "webmaster@alphasierrapapa.com." End If End IfZuallererst 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. Verwandte Artikel
ACT MetaMailer - Mails verschicken leicht gemacht Links zu anderen Sites
AspIN - Liste der Emailkomponenten 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. 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.
©2000-2006 AspHeute.com |