SMTP proxy w Pythonie

Podczas tworzenia projektu w PHP często zdarza się, że musimy przetestować pewien fragment kodu wykorzystujący funkcję mail. Od dłuższego czasu stosuję w tym celu wygodne rozwiązanie wykorzystujące Pythona i konto na Gmailu. Skrypt jest bardzo krótki, i świetnie obrazuje filozofię „batteries included” Pythona:

import smtpd
import asyncore
import smtplib

SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587
SMTP_LOGIN = 'user@gmail.com'
SMTP_PASSWORD = 'pass'

class MSMTPServer(smtpd.SMTPServer):
    def process_message(self, peer, mailfrom, rcpttos, data):
        session = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
        session.ehlo(SMTP_LOGIN)
        session.starttls()
        session.ehlo(SMTP_LOGIN)
        session.login(SMTP_LOGIN, SMTP_PASSWORD)
        session.sendmail(SMTP_LOGIN, rcpttos, data)
        session.quit()

if __name__ == "__main__":
    server = MSMTPServer(('127.0.0.1', 25), None)
    try:
        asyncore.loop()
    except KeyboardInterrupt:
        print("Ctr+C pressed...")

Jak widać głównym elementem jest klasa dziedziczącą po smtpd.SMTPServer, w której nadpisana została metoda process_message. Po uruchomieniu skryptu tworzony jest serwer SMTP, który zaczyna nasłuchiwać na porcie 25 localhosta. Wszystkie wiadomości przychodzące wysyłane zostają za pośrednictwem wskazanego konta Gmail.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s