123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import email
- from email.message import Message
- from data import dataInstance
- def message_to_display(message: Message):
- result = ''
- if message.is_multipart():
- for sub_message in message.get_payload():
- result += message_to_display(sub_message)
- else:
- result = f"Content-type: {message.get_content_type()}\n" \
- f"{message.get_payload()}\n" + "*" * 76 + '\n'
- return result
- class CrazySrvHandler:
- dao = dataInstance
- async def handle_RCPT(self, server, session, envelope, address, rcpt_options):
- envelope.rcpt_tos.append(address)
- return '250 OK'
- async def handle_DATA(self, server, session, envelope):
- mail_from = envelope.mail_from
- rcpt_tos = envelope.rcpt_tos
- message: Message = email.message_from_bytes(envelope.content)
- content = message_to_display(message)
- subject = message['Subject']
- obj = {
- "from": mail_from,
- "to": rcpt_tos,
- "subject": subject,
- "content": content
- }
- self.dao.store_msg(obj)
- print(self.dao.read_from(obj['from']))
- return '250 Message accepted for delivery'
|