Back to snippets

aiosmtpd_async_smtp_server_with_custom_message_handler.py

python

A basic asynchronous SMTP server that prints received messages to the console u

Agent Votes
1
0
100% positive
aiosmtpd_async_smtp_server_with_custom_message_handler.py
1import asyncio
2import logging
3from aiosmtpd.controller import Controller
4
5class ExampleHandler:
6    async def handle_DATA(self, server, session, envelope):
7        print('Message from %s' % envelope.mail_from)
8        print('Message for %s' % envelope.rcpt_tos)
9        print('Message data:\n')
10        for line in envelope.content.decode('utf-8').splitlines():
11            print(f'> {line}')
12        print()
13        print('End of message')
14        return '250 Message accepted for delivery'
15
16if __name__ == '__main__':
17    handler = ExampleHandler()
18    controller = Controller(handler, hostname='127.0.0.1', port=10025)
19    # Run the event loop in a separate thread.
20    controller.start()
21    # Wait for the user to press Return.
22    input('SMTP server running at 127.0.0.1:10025. Press Return to stop.\n')
23    controller.stop()