Ein SMTP-Server ist erforderlich, um den Betrieb der Rails-Implementierung in ActionMailer zu überprüfen. Es ist jedoch schwierig, einen Server einzurichten. Daher habe ich in Python einen Dummy-SMTP-Server eingerichtet.
Referenz: So richten Sie einen einfachen SMTP-Server ein, der lokal mit Python - Qiita getestet werden kann
Beginnen Sie wie folgt mit Bezug auf die obige Seite
$ python -m smtpd -n -c DebuggingServer localhost:8025
Stellen Sie vorerst über Telnet eine Verbindung zum lokalen SMTP-Server her und versuchen Sie, mit dem SMTP-Server zu sprechen.
Referenz: Mail per Telnet senden
Geben Sie für den Verbindungszielhost die Portnummer des Servers an, den Sie gerade als lokale Host-Portnummer gestartet haben.
$ telnet localhost 8025
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 localhost.localdomain Python SMTP proxy version 0.2
Geben Sie den Befehl HELO ein und geben Sie ein (das ">" am Anfang der Zeile steht für die Eingabezeile und wird nicht eingegeben).
>HELO localhost
250 localhost.localdomain
Geben Sie den Absender ein (von :)
>MAIL FROM: [email protected]
250 Ok
Geben Sie das Ziel ein (bis :)
>RCPT TO: [email protected]
250 Ok
Geben Sie den Befehl DATA ein und geben Sie den E-Mail-Text ein. Wenn Sie nur die Zeile "." Eingeben, wird die Texteingabe abgeschlossen.
>DATA
354 End data with <CR><LF>.<CR><LF>
>Hello world.
>.
250 Ok
Beenden Sie den SMTP-Server mit dem Befehl QUIT.
>QUIT
221 Bye
Connection closed by foreign host.
Die Kommunikation ist in Ordnung, wenn das Protokoll des Übertragungsinhalts auf dem Bildschirm des Terminals angezeigt wird, das den SMTP-Server durch Ausführen des obigen Verfahrens gestartet hat.
Beschreiben Sie die ActionMailer-Einstellungen in config / application.rb wie unten gezeigt
config/application.rb
config.action_mailer.smtp_settings = {
address: "localhost",
port: 8025,
domain: "localhost"
}
Erstellen Sie app / mailer / test_mailer.rb und definieren Sie die Testmail-Versandmethode wie folgt
app/mailer/test_mailer.rb
class TestMailer < ActionMailer::Mailer
default from: "[email protected]",
to: "[email protected]"
def test
mail(subject: "test") do |format|
format.text { render text: "This is test mail." }
end
end
end
Wenn die oben genannten Vorbereitungen abgeschlossen sind, starten Sie die Rails-Konsole und senden Sie eine Test-E-Mail wie unten gezeigt.
> TestMailer.test.deliver_now
Überprüfen Sie als Ergebnis der obigen Eingabe die Terminalausgabe des SMTP-Servers und lesen Sie "Dies ist Testmail".