Richten Sie mit Python einen Dummy-SMTP-Server ein und überprüfen Sie den Sendevorgang von Action Mailer

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.

Richten Sie einen Dummy-SMTP-Server ein

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

Überprüfen Sie den Betrieb des SMTP-Servers mit Telnet

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.

Versuchen Sie, eine E-Mail von der Rails-Seite zu senden

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

Referenz

Recommended Posts

Richten Sie mit Python einen Dummy-SMTP-Server ein und überprüfen Sie den Sendevorgang von Action Mailer
Richten Sie einen Test-SMTP-Server in Python ein.
Richten Sie einen einfachen SMTP-Server in Python ein
Senden Sie E-Mails mit mailx an einen mit Python eingerichteten Dummy-SMTP-Server.
Richten Sie mit Python 3 einen einfachen HTTPS-Server ein
So richten Sie einen einfachen SMTP-Server ein, der lokal in Python getestet werden kann
Python-Skript, das den Status des Servers über den Browser überprüfen kann
So überprüfen Sie die Speichergröße einer Variablen in Python
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
Überprüfen Sie das Verhalten des Zerstörers in Python
Überprüfen Sie die speicherinterne Byte-Zeichenfolge der Gleitkommazahl in Python
Richten Sie mit http.server in Python 3 in 30 Sekunden einen lokalen Webserver ein
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Einführung und Verwendung der Python-Flasche ・ Versuchen Sie, einen einfachen Webserver mit Anmeldefunktion einzurichten
Testen Sie das Hochladen von Bildern, indem Sie in Python erstellen, ohne Dummy-Bilddateien in Django zu platzieren
Holen Sie sich den Aufrufer einer Funktion in Python
Kopieren Sie die Liste in Python
Richten Sie einen UDP-Server in der Sprache C ein
Erstellen Sie ein Django-Projekt und eine Django-Anwendung in einer virtuellen Python-Umgebung und starten Sie den Server
Ausgabe in Form eines Python-Arrays
Berücksichtigung der Stärken und Schwächen von Python
[Python3] Machen Sie einen Screenshot einer Webseite auf dem Server und schneiden Sie sie weiter zu
Erstellen Sie einen API-Server, um den Betrieb der Front-Implementierung mit Python3 und Flask zu überprüfen
Das Ergebnis der Erstellung eines Kartenalbums italienischer Jungvermählten in Python und dessen Weitergabe
[Python] Ändern Sie die Textfarbe und Hintergrundfarbe eines bestimmten Schlüsselworts in der Druckausgabe
Ich habe die Geschwindigkeit der Referenz des Pythons in der Liste und die Referenz der Wörterbucheinbeziehung aus der In-Liste verglichen.
Richten Sie einen FTP-Server ein, der sofort erstellt und zerstört werden kann (in Python).
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
[Python] Darstellung der Anzahl der Beschwerden von Lebensversicherungsunternehmen in einem Balkendiagramm
Suchen Sie eine Richtlinie für die Anzahl der Prozesse / Threads, die auf dem Anwendungsserver festgelegt werden sollen
Überprüfen Sie die Verarbeitungszeit und die Anzahl der Aufrufe für jeden Prozess mit Python (cProfile).
Überprüfen Sie, ob die Zeichenfolge eine Zahl in Python ist
Die Geschichte des Starts eines Minecraft-Servers von Discord
Python zeigt aus der Perspektive eines C-Sprachprogrammierers
Richten Sie in 30 Minuten einen kostenlosen Server unter AWS ein
Ein Memorandum über die Umsetzung von Empfehlungen in Python
Überprüfen Sie die atrophische Natur der Wahrscheinlichkeitsverteilung in Python
[Vagrant] Richten Sie einen einfachen API-Server mit Python ein
Ein Server, der mit Flasche.py und OpenCV die Anzahl der Personen vor der Kamera zurückgibt
Wenn es schwierig ist, beim Senden von E-Mails mit Python lokal einen SMTP-Server einzurichten.
Eine Bibliothek, die Leben und Tod anderer Maschinen durch Ping von Python aus überwacht
Ruft den Wert eines bestimmten Schlüssels bis zum angegebenen Index der Wörterbuchliste in Python ab
Wie kann man schnell die Häufigkeit des Auftretens von Zeichen aus einer Zeichenfolge in Python zählen?
Verfahren von der Umgebungskonstruktion bis zum Betriebstest von testinfra, einem von Python erstellten Testwerkzeug für die Serverumgebung
Lassen Sie uns den Code des in Python [VS Code] geschriebenen automatischen E2E-Tests statisch überprüfen und formatieren.
Finden Sie die scheinbare Breite einer Zeichenfolge in Python heraus
Anders als der Importtyp von Python. Bedeutung von aus A Import B.
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
Erstellen Sie eine Python-Umgebung und übertragen Sie Daten auf den Server
Python: Erstellen Sie ein Wörterbuch aus einer Liste von Schlüsseln und Werten
[Tipps] Probleme und Lösungen bei der Entwicklung von Python + Kivy
Eine Reihe von Skriptdateien, die Wordcloud mit Python3 ausführen
Finden Sie die Eigenwerte einer reellen symmetrischen Matrix in Python
[Python] Die Rolle des Sterns vor der Variablen. Teilen Sie den Eingabewert und weisen Sie ihn einer Variablen zu
Ich möchte die Frage nach der Methode "__init__" und dem Argument "self" der Python-Klasse klären.
Erstellen Sie eine Instanz einer vordefinierten Klasse aus einer Zeichenfolge in Python