|
|
import asyncio |
|
|
from aiosmtpd.controller import Controller |
|
|
|
|
|
class CustomSMTPHandler: |
|
|
async def handle_DATA(self, server, session, envelope): |
|
|
print(f'Message from: {envelope.mail_from}') |
|
|
print(f'Message to : {envelope.rcpt_tos}') |
|
|
print(f'Message data:\n{envelope.content.decode("utf8", errors="replace")}') |
|
|
print('Message accepted for delivery') |
|
|
return '250 Message accepted for delivery' |
|
|
|
|
|
|
|
|
def start_smtp_server(): |
|
|
handler = CustomSMTPHandler() |
|
|
controller = Controller(handler, hostname='0.0.0.0', port=1025) |
|
|
controller.start() |
|
|
|
|
|
if __name__ == "__main__": |
|
|
start_smtp_server() |
|
|
print("SMTP server running on 127.0.0.1:1025") |
|
|
|
|
|
try: |
|
|
asyncio.get_event_loop().run_forever() |
|
|
except KeyboardInterrupt: |
|
|
pass |
|
|
|