def test_lazy_translated():
    # prepare translations
    T = gettext.GNUTranslations()
    T._catalog = {'invitation': 'invitaci\xf3n'}
    _ = T.gettext

    msg = Message(html='...', subject=lazy_string(_, 'invitation'))
    assert decode_header(msg.as_message()['subject']) == _('invitation')

    msg = Message(html='...', subject='invitaci\xf3n')
    assert decode_header(msg.as_message()['subject']) == 'invitaci\xf3n'
Beispiel #2
0
def test_dkim():

    priv_key, pub_key = _generate_key(length=1024)

    DKIM_PARAMS = [
        dict(key=NativeStringIO(to_native(priv_key)),
             selector='_dkim',
             domain='somewhere1.net'),
        dict(key=priv_key, selector='_dkim', domain='somewhere2.net'),

        # legacy key argument name
        dict(privkey=priv_key, selector='_dkim', domain='somewhere3.net'),
    ]

    if is_py26:
        load_email_charsets()

    for dkimparams in DKIM_PARAMS:
        message = Message(**common_email_data())
        message.dkim(**dkimparams)
        # check DKIM header exist
        assert message.as_message()['DKIM-Signature']
        #print(__name__, "type message.as_string()==", type(message.as_string()))
        #print(message.as_string())
        #print(type(message.as_string()))
        #print(email.__file__)
        #print(email.charset.CHARSETS)
        #print('adding utf-8 charset...')
        #email.charset.add_charset('utf-8', email.charset.BASE64, email.charset.BASE64)
        #print(email.charset.CHARSETS)
        assert 'DKIM-Signature: ' in message.as_string()
        assert _check_dkim(message, pub_key)
Beispiel #3
0
def test_message_id():

    params = dict(html='...', mail_from='[email protected]', mail_to='[email protected]')

    # Check message-id not exists by default
    m = Message(**params)
    assert not m.as_message()['Message-ID']

    # Check message-id property setter
    m.message_id = 'ZZZ'
    assert m.as_message()['Message-ID'] == 'ZZZ'

    # Check message-id exists when argument specified
    m = Message(message_id=MessageID(), **params)
    assert m.as_message()['Message-ID']

    m = Message(message_id='XXX', **params)
    assert m.as_message()['Message-ID'] == 'XXX'
Beispiel #4
0
def test_message_id():

    params = dict(html='...', mail_from='[email protected]', mail_to='[email protected]')

    # Check message-id not exists by default
    m = Message(**params)
    assert not m.as_message()['Message-ID']

    # Check message-id property setter
    m.message_id = 'ZZZ'
    assert m.as_message()['Message-ID'] == 'ZZZ'

    # Check message-id exists when argument specified
    m = Message(message_id=MessageID(), **params)
    assert m.as_message()['Message-ID']

    m = Message(message_id='XXX', **params)
    assert m.as_message()['Message-ID'] == 'XXX'
Beispiel #5
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 #6
0
def test_headers_not_double_encoded():

    TEXT = '웃'

    m = Message()
    m.mail_from = (TEXT, '[email protected]')
    m.mail_to = (TEXT, '[email protected]')
    m.subject = TEXT
    m.html = '...'
    msg = m.as_message()
    assert decode_header(parseaddr(msg['From'])[0]) == TEXT
    assert decode_header(parseaddr(msg['To'])[0]) == TEXT
    assert decode_header(msg['Subject']) == TEXT
Beispiel #7
0
def test_headers_not_double_encoded():

    TEXT = '웃'

    m = Message()
    m.mail_from = (TEXT, '[email protected]')
    m.mail_to = (TEXT, '[email protected]')
    m.subject = TEXT
    m.html = '...'
    msg = m.as_message()
    assert decode_header(parseaddr(msg['From'])[0]) == TEXT
    assert decode_header(parseaddr(msg['To'])[0]) == TEXT
    assert decode_header(msg['Subject']) == TEXT
Beispiel #8
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
def test_dkim():

    priv_key, pub_key = _generate_key(length=1024)

    DKIM_PARAMS = [dict(key=NativeStringIO(to_native(priv_key)),
                        selector='_dkim',
                        domain='somewhere1.net'),

                   dict(key=priv_key,
                        selector='_dkim',
                        domain='somewhere2.net'),

                   # legacy key argument name
                   dict(privkey=priv_key,
                        selector='_dkim',
                        domain='somewhere3.net'),
                   ]

    if is_py26:
        load_email_charsets()

    for dkimparams in DKIM_PARAMS:
        message = Message(**common_email_data())
        message.dkim(**dkimparams)
        # check DKIM header exist
        assert message.as_message()['DKIM-Signature']
        #print(__name__, "type message.as_string()==", type(message.as_string()))
        #print(message.as_string())
        #print(type(message.as_string()))
        #print(email.__file__)
        #print(email.charset.CHARSETS)
        #print('adding utf-8 charset...')
        #email.charset.add_charset('utf-8', email.charset.BASE64, email.charset.BASE64)
        #print(email.charset.CHARSETS)
        assert 'DKIM-Signature: ' in message.as_string()
        assert _check_dkim(message, pub_key)