def send(to, subject, body, html=None, copy=None, attachments=None): if not attachments: attachments = [] message = Message(text=body, html=html, subject=subject, mail_from=config.FROM_EMAIL) for filename, attachment, mime in attachments: message.attach(filename=filename, data=attachment, mime=f"{mime} charset=utf-8") if not config.SEND_EMAILS: body = body.replace("https", "http") return print("Sending email", str(body.encode('utf-8'))) message.send( to=to, smtp={ "host": config.SMTP_HOST, "user": config.SMTP_LOGIN, "password": config.SMTP_PASSWORD, "port": "465", "ssl": True, }, )
def test_several_recipients(): # Test multiple recipients in "To" header params = dict(html='...', mail_from='[email protected]') m = Message(mail_to=['[email protected]', '[email protected]'], cc='[email protected]', **params) assert m.as_message()['To'] == '[email protected], [email protected]' assert m.as_message()['cc'] == '[email protected]' m = Message(mail_to=[('♡', '[email protected]'), ('웃', '[email protected]')], **params) assert m.as_message()['To'] == '=?utf-8?b?4pmh?= <[email protected]>, =?utf-8?b?7JuD?= <[email protected]>' # Test sending to several emails backend = InMemoryBackend() m = Message(mail_to=[('♡', '[email protected]'), ('웃', '[email protected]')], cc=['[email protected]', '[email protected]'], bcc=['[email protected]', '[email protected]'], **params) m.send(smtp=backend) for addr in ['[email protected]', '[email protected]', '[email protected]', '[email protected]']: assert len(backend.messages[addr]) == 1
def _send_message(data: List[Dict], message: Message) -> bool: now = datetime.utcnow() return message.send( to=[str(e) for e in params.email.recipients], render={ "states": data, "timestamp": now.strftime("%A, %B %-d, %Y (%I:%M:%S UTC)"), }, smtp={ "host": params.email.smtp_host, "port": params.email.smtp_port }, )
def test_several_recipients(): # Test multiple recipients in "To" header params = dict(html='...', mail_from='[email protected]') m = Message(mail_to=['[email protected]', '[email protected]'], cc='[email protected]', **params) assert m.as_message()['To'] == '[email protected], [email protected]' assert m.as_message()['cc'] == '[email protected]' m = Message(mail_to=[('♡', '[email protected]'), ('웃', '[email protected]')], **params) assert m.as_message( )['To'] == '=?utf-8?b?4pmh?= <[email protected]>, =?utf-8?b?7JuD?= <[email protected]>' # Test sending to several emails backend = InMemoryBackend() m = Message(mail_to=[('♡', '[email protected]'), ('웃', '[email protected]')], cc=['[email protected]', '[email protected]'], bcc=['[email protected]', '[email protected]'], **params) m.send(smtp=backend) for addr in ['[email protected]', '[email protected]', '[email protected]', '[email protected]']: assert len(backend.messages[addr]) == 1