pyceo/tests/MockSMTPServer.py

38 lines
903 B
Python
Raw Normal View History

2021-09-09 20:13:39 -04:00
import os
2021-09-09 23:21:22 -04:00
import time
2021-09-09 20:13:39 -04:00
2021-08-13 20:11:56 -04:00
from aiosmtpd.controller import Controller
class MockSMTPServer:
2021-08-20 14:17:00 -04:00
def __init__(self, hostname='127.0.0.1', port=8025):
2021-08-13 20:11:56 -04:00
self.messages = []
self.controller = Controller(MockHandler(self), hostname, port)
def start(self):
self.controller.start()
def stop(self):
self.controller.stop()
class MockHandler:
def __init__(self, mock_server):
self.mock_server = mock_server
async def handle_DATA(self, server, session, envelope):
msg = {
'from': envelope.mail_from,
'to': envelope.rcpt_tos[0],
'content': envelope.content.decode(),
}
self.mock_server.messages.append(msg)
return '250 Message accepted for delivery'
2021-09-09 20:13:39 -04:00
if __name__ == '__main__':
assert os.geteuid() == 0
server = MockSMTPServer('0.0.0.0', 25)
server.start()
2021-09-09 23:21:22 -04:00
time.sleep(1e6)