Configurer un serveur SMTP factice avec Python et vérifier le fonctionnement de l'envoi depuis Action Mailer

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.

Configurer un serveur SMTP factice

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

Vérifiez le fonctionnement du serveur SMTP avec telnet

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.

Essayez d'envoyer un e-mail du côté Rails

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

référence

Recommended Posts

Configurer un serveur SMTP factice avec Python et vérifier le fonctionnement de l'envoi depuis Action Mailer
Configurez un serveur SMTP de test en Python.
Configurer un serveur SMTP simple en Python
Envoyez du courrier avec mailx à un serveur SMTP factice configuré avec python.
Configurer un serveur HTTPS simple avec Python 3
Comment configurer un serveur SMTP simple qui peut être testé localement en Python
Script Python qui peut vérifier l'état du serveur à partir du navigateur
Comment vérifier la taille de la mémoire d'une variable en Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Vérifiez le comportement du destroyer en Python
Vérifions la chaîne d'octets en mémoire du nombre flottant flottant en Python
Configurez un serveur Web local en 30 secondes en utilisant http.server en python 3
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Introduction et utilisation de la bouteille Python ・ Essayez de configurer un serveur Web simple avec une fonction de connexion
Créer en Python sans fichier image factice dans Django et tester le téléchargement de l'image
Récupérer l'appelant d'une fonction en Python
Copiez la liste en Python
Configurer un serveur UDP en langage C
Créer un projet et une application Django dans un environnement virtuel Python et démarrer le serveur
Sortie sous la forme d'un tableau python
Prise en compte des forces et faiblesses de Python
[Python3] Prenez une capture d'écran d'une page Web sur le serveur et recadrez-la davantage
Construisez un serveur API pour vérifier le fonctionnement de l'implémentation frontale avec python3 et Flask
Le résultat de la création d'un album de cartes de jeunes mariés italiens en Python et de son partage
[Python] Changer la couleur du texte et la couleur d'arrière-plan d'un mot clé spécifique dans la sortie d'impression
J'ai comparé la vitesse de la référence du python dans la liste et la référence de l'inclusion du dictionnaire faite à partir de la liste dans.
Mettre en place un serveur FTP qui peut être créé et détruit immédiatement (en Python)
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
[Python] Représentation du nombre de plaintes des compagnies d'assurance-vie dans un graphique à barres
Trouvez une ligne directrice pour le nombre de processus / threads à définir sur le serveur d'applications
Vérifiez le temps de traitement et le nombre d'appels pour chaque processus avec python (cProfile)
Vérifiez si la chaîne est un nombre en python
L'histoire du lancement d'un serveur Minecraft depuis Discord
Points Python du point de vue d'un programmeur en langage C
Configurez un serveur gratuit sur AWS en 30 minutes
Un mémorandum sur la mise en œuvre des recommandations en Python
Vérifiez la nature atrophique de la distribution de probabilité en Python
[Vagrant] Configurer un serveur API simple avec python
Un serveur qui renvoie le nombre de personnes devant la caméra avec bottle.py et OpenCV
Lorsqu'il est difficile de configurer un serveur SMTP localement lors de l'envoi de courrier avec Python.
Une bibliothèque qui surveille la vie et la mort d'autres machines en envoyant un ping à partir de Python
Obtenir la valeur d'une clé spécifique jusqu'à l'index spécifié de la liste de dictionnaires en Python
Comment compter rapidement la fréquence d'apparition des caractères à partir d'une chaîne de caractères en Python?
Procédure de la construction de l'environnement au test de fonctionnement de testinfra, un outil de test d'environnement de serveur réalisé par Python
Vérifions et formons statiquement le code du test automatique E2E écrit en Python [VS Code]
Découvrez la largeur apparente d'une chaîne en python
Différent du type d'importation de python. Signification de depuis A import B
Obtenez le nombre d'éléments spécifiques dans la liste python
[Note] Importation de fichiers dans le répertoire parent en Python
Créer un environnement Python et transférer des données vers le serveur
Python: créer un dictionnaire à partir d'une liste de clés et de valeurs
[Astuces] Problèmes et solutions dans le développement de python + kivy
Un ensemble de fichiers de script qui font wordcloud avec Python3
Trouver les valeurs propres d'une vraie matrice symétrique en Python
[Python] Le rôle de l'astérisque devant la variable. Divisez la valeur d'entrée et affectez-la à une variable
Je veux clarifier la question de la méthode "__init__" et de l'argument "self" de la classe Python.
Créer une instance d'une classe prédéfinie à partir d'une chaîne en Python