O'Reilly logo

Rails Kochbuch by Rob Orsini

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

First
|
341
Max.
Linie
Max.
Linie
Kapitel 9
KAPITEL 9
Action Mailer
9.0 Einführung
Von Dae San Hwang
Die meisten Leute erhalten Dutzende, wenn nicht Hunderte E-Mails täglich. Viele dieser
E-Mails werden nicht von Menschen, sondern von Computerprogrammen generiert und
versendet. Wenn Sie zum Beispiel einen Newsletter abonnieren, dann wird dieser durch
Software versendet, platzieren Sie online eine Bestellung, wird die Bestätigungsnachricht
durch die Shopping-Anwendung erzeugt, und wenn Sie ein Passwort zurücksetzen müs-
sen, umfasst die Operation wahrscheinlich mehrere automatisch generierte E-Mails.
Ein umfassendes Framework für Webanwendungen muss daher in der Lage sein, E-Mails
zu generieren und zu senden. Bei Rails übernimmt das Action Mailer-Framework diese
Aufgabe. Um E-Mails mit Action Mailer versenden zu können, müssen Sie zuerst eine
eigene Mailer-Klassen, anlegen. Diese Mailer-Klasse enthält Konstruktor-Methoden für
die verschiedenen Nachrichten, die Ihre Anwendung senden muss. Das Layout Ihrer
E-Mails wird von Action View kontrolliert, und zwar ähnlich wie bei RHTML-Templates.
Jeder Konstruktor besitzt ein entsprechendes Action View-Template, das den Inhalt der
E-Mail bestimmt.
Sobald Ihre Mailer-Klasse und die Template-Dateien vorhanden sind, ist es ein Leichtes,
E-Mails zu erzeugen und zu verschicken. Sie müssen nur einige
String-Werte für die E-
Mail-Header bereitstellen sowie einige Objekte, um das Action View-Template aufzufül-
len.
Neben dem Versenden von E-Mails muss ein Web-Framework in der Lage sein, auf ein-
gehende Mail zu reagieren. Action Mailer kann eingehende E-Mail verarbeiten. Nein, es
spricht nicht direkt mit POP3- oder IMAP-Mailservern. Es benötigt externe Helper, um
die E-Mail abzufangen und den Text der E-Mail an eine von Ihnen definierte
receive-
Methode zu übergeben. Die Rezepte in diesem Kapitel zeigen drei verschiedene Möglich-
keiten auf, E-Mails zu empfangen und an die
receive-Methode Ihrer Mailer-Klasse weiter-
zuleiten.
00____RailsKochbuch.book Seite 341 Dienstag, 3. Juli 2007 8:13 08
Max.
Linie
Max.
Linie
342
|
Kapitel 9: Action Mailer
Links
9.1 Rails für den Mail-Versand konfigurieren
Problem
Von Dae San Hwang
Sie wollen Ihre Rails-Anwendung für den Versand von E-Mails konfigurieren.
Lösung
Fügen Sie den folgenden Code in Ihre config/environment.rb ein:
ActionMailer::Base.server_settings = {
:address => "mail.ihrhoster.com",
:port => 25,
:domain => "www.ihrewebsite.com",
:authentication => :login,
:user_name => "benutzername",
:password => "passwort"
}
Ersetzen Sie die Hash-Werte durch die passenden Einstellungen für Ihren Simple Mail
Transfer Protocol-Server (SMTP).
Sie könnten auch das Standardformat für E-Mails ändern wollen. Wenn Sie E-Mails im
HTML- statt im Textformat senden wollen, müssen Sie noch die folgende Zeile in Ihre
config/environment.rb einfügen:
ActionMailer::Base.default_content_type = "text/html"
Mögliche Werte für ActionMailer::Base.default_content_type sind "text/plain", "text/
html"
und "text/enriched". Voreingestellt ist "text/plain".
Diskussion
ActionMailer::Base.server_settings ist ein Hash-Objekt, das die Konfigurationsparame-
ter für die Verbindung zu einem SMTP-Server enthält. Die Aufgaben dieser Parameter sind
wie folgt:
:address
Adresse Ihres SMTP-Servers.
:port
Portnummer Ihres SMTP-Servers. Die Standard-Portnummer für SMTP ist 25.
:domain
Der Domainname, der zur Identifikation Ihres Servers gegenüber dem SMTP-Server
verwendet wird. Sie sollten den Domainnamen des die E-Mail sendenden Servers
verwenden, damit Ihre E-Mails nicht als Spam abgelehnt werden.
00____RailsKochbuch.book Seite 342 Dienstag, 3. Juli 2007 8:13 08
Max.
Linie
Max.
Linie
9.2 Eine eigene Mailer-Klasse mit dem Mailer-Generator erzeugen
|
343
Rechts
:authentication
Darf
nil, :plain, :login oder :cram_md5 enthalten. Der von Ihnen gewählte Authen-
tifizierungswert muss der Authentifizierungsmethode entsprechen, die Ihr SMTP-
Server erwartet. Verlangt Ihr SMTP-Server keine Authentifizierung, setzen Sie diesen
Wert auf
nil.
:user_name, :password
Benutzername und Passwort für die Authentifizierung am SMTP-Server. Wird benö-
tigt, wenn
:authentication auf :plain, :login oder :cram_md5 gesetzt wurde. Ist :au-
thentication
hingegen auf nil gesetzt, sollten diese Werte ebenfalls auf nil gesetzt
werden.
In der Version 1.2.1 unterstützt Action Mailer kein SMTP über TLS.
Siehe auch
• Die Action Mailer-Dokumentation, http://api.rubyonrails.org/classes/ActionMailer/
Base.html
Wikipedia-Referenz für SMTP, http://en.wikipedia.org/wiki/Smtp
Rezept 9.2, »Eine eigene Mailer-Klasse mit dem Mailer-Generator erzeugen«
9.2 Eine eigene Mailer-Klasse mit dem
Mailer-Generator erzeugen
Problem
Von Dae San Hwang
Sie haben Rails für die Kommunikation mit einem Mailserver konfiguriert, besitzen aber
noch keine Möglichkeit, die E-Mails selbst zu erzeugen und zu senden. Sie wollen eine
eigene Mailer-Klasse erzeugen, um E-Mails versenden zu können.
Zum Beispiel besitzen Sie eine Website, auf der sich neue Kunden für Online-Accounts
registrieren können. Ihre Anwendung soll jedem neu registrierten Kunden eine Willkom-
mens-E-Mail schicken.
Lösung
Aus dem Root-Verzeichnis der Anwendung verwenden Sie den Mailer-Generator, um eine
neue Mailer-Klasse zu erzeugen.
$ ruby script/generate mailer CustomerMailer welcome_message
00____RailsKochbuch.book Seite 343 Dienstag, 3. Juli 2007 8:13 08

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required