Un serveur SMTP est nécessaire pour vérifier le fonctionnement de l'implémentation de Rails dans ActionMailer, mais il est difficile de configurer un serveur, j'ai donc configuré un serveur SMTP factice en Python.
Référence: Comment configurer un serveur SMTP simple qui peut être testé localement avec Python --Qiita
Commencez comme suit en vous référant à la page ci-dessus
$ python -m smtpd -n -c DebuggingServer localhost:8025
Pour le moment, connectez-vous au serveur SMTP local avec telnet et essayez de parler au serveur SMTP.
Référence: Envoyer un e-mail par telnet
Pour l'hôte auquel se connecter, spécifiez le numéro de port du serveur que vous venez de démarrer comme numéro de port de l'hôte local.
$ 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
Entrez la commande HELO et Entrée (le ">" au début de la ligne représente la ligne d'entrée et n'est pas réellement entré)
>HELO localhost
250 localhost.localdomain
Entrez l'expéditeur (de :)
>MAIL FROM: [email protected]
250 Ok
Entrez la destination (à :)
>RCPT TO: [email protected]
250 Ok
Entrez la commande DATA et entrez le corps de l'e-mail. La saisie de la seule ligne "." Termine la saisie de texte.
>DATA
354 End data with <CR><LF>.<CR><LF>
>Hello world.
>.
250 Ok
Quittez le serveur SMTP avec la commande QUIT.
>QUIT
221 Bye
Connection closed by foreign host.
La communication est OK lorsque le journal du contenu de la transmission est affiché sur l'écran du terminal qui a démarré le serveur SMTP en exécutant la procédure ci-dessus.
Décrivez les paramètres ActionMailer dans config / application.rb comme indiqué ci-dessous
config/application.rb
config.action_mailer.smtp_settings = {
address: "localhost",
port: 8025,
domain: "localhost"
}
Créez app / mailer / test_mailer.rb et définissez la méthode d'envoi du courrier de test comme suit
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
Lorsque les préparatifs ci-dessus sont terminés, lancez la console des rails et envoyez un e-mail de test comme indiqué ci-dessous.
> TestMailer.test.deliver_now
À la suite de l'entrée ci-dessus, vérifiez la sortie du terminal du serveur SMTP et lisez «Ceci est un courrier de test».
Recommended Posts