Beispiel #1
0
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,
        },
    )
Beispiel #2
0
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
Beispiel #3
0
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
        },
    )
Beispiel #4
0
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