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'
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)
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'
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'
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_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
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
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)