def test_send_valid_email(handler: MongoConnection, mail_client: smtplib.SMTP): add_test_user(handler) msg = create_msg() mail_client.send_message(msg) username, domain = split_email_addr(msg['To']) assert len(handler.get_emails(username=username, domain=domain)) > 0
def add_email(self, to_addr, from_addr, body): if not validate_email_addr(to_addr): raise ValueError('To Address not valid: ' + to_addr) user, domain = split_email_addr(to_addr) user_obj = self.get_user(username=user, domain=domain) email = Email(from_addr=from_addr, to_addr=to_addr, body=body, user_ref=user_obj) email.save()
async def handle_RCPT(self, server, session, envelope, address, rcpt_options): username, domain = split_email_addr(address) try: if not validate_email_addr(address): return self.response_error if connection.get_user(username, domain): envelope.rcpt_tos.append(address) return self.response_ok except: return self.response_error
async def handle_DATA(self, server, session, envelope): try: to_addresses = envelope.rcpt_tos for to_addr in to_addresses: user, domain = split_email_addr(to_addr) if connection.get_user(user, domain): from_addr = envelope.mail_from content = envelope.content.decode('utf-8') connection.add_email(from_addr=from_addr, to_addr=to_addr, body=content) return self.response_ok except: return self.response_error
def test_email(handler: MongoConnection): from_addr = '*****@*****.**' to_addr = '*****@*****.**' body = 'This is just a test' username, domain = split_email_addr(to_addr) handler.add_domain(domain) handler.add_user(username, domain) handler.add_email(to_addr=to_addr, from_addr=from_addr, body=body) emails = handler.get_emails(username=username, domain=domain) has_match = False for email in emails: if email.from_addr == from_addr and email.to_addr == to_addr and email.body == body: has_match = True assert has_match