Как создать постфиксный сервер с помощью python smtpd - PullRequest
2 голосов
/ 14 апреля 2019

Что касается библиотеки python smtpd, я пытаюсь переопределить метод process_message, но когда я пытаюсь подключиться к ней с помощью клиента и отправить сообщение, скажем, на учетную запись gmail, она просто распечатывает сообщение на консоли, но я хочу егона самом деле, чтобы отправить сообщение, как postfix в локальной машине.Как мне добиться этого?

Я гугл smtpd, но не очень полезное сообщение, чтобы найти

import smtpd
import asyncore

class CustomSMTPServer(smtpd.SMTPServer):

    def process_message(self, peer, mailfrom, rcpttos, data, **kwargs):
        print('Receiving message from:', peer)
        print('Message addressed from:', mailfrom)
        print('Message addressed to  :', rcpttos)
        print('Message length        :', len(data))
        return

server = CustomSMTPServer(('127.0.0.1', 1025), None)

asyncore.loop()

1 Ответ

0 голосов
/ 15 апреля 2019

Цитируя Ответ Роберта Путта , вы будете бороться с доставкой.Лучшим решением было бы локально разместить SMTP-сервер (конечно, лучшим решением было бы использование AmazonSES или API, например MailGun ). DigialOcean имеет хороший учебник здесь.Затем вы можете использовать приведенный ниже код Python для отправки электронного письма.

import smtplib

sender = 'no_reply@mydomain.com'
receivers = ['person@otherdomain.com']

message = """From: No Reply <no_reply@mydomain.com>
To: Person <person@otherdomain.com>
Subject: Test Email

This is a test e-mail message.
"""

try:
    smtpObj = smtplib.SMTP('localhost')
    smtpObj.sendmail(sender, receivers, message)         
    print("Successfully sent email")
except SMTPException:
    print("Error: unable to send email")

Надеюсь, это поможет!

...