File: pyedit-products/unzipped/PP4E/Internet/Email/mailtools/_test-i18n-headers.py

# test i18n header decoding/encoding methods' logic

import sys
sys.path.insert(0, '..')  # for package relative inoports

from tkinter.scrolledtext import ScrolledText
t = ScrolledText(width=170, height=40)

from mailtools.mailParser import MailParser
decodeHeader = MailParser().decodeHeader
decodeAddrHeader = MailParser().decodeAddrHeader

from mailtools.mailSender import MailSender
encodeHeader = MailSender().encodeHeader
encodeAddrHeader = MailSender().encodeAddrHeader


subjs = [
'=?koi8-r?B?79DUyc3J2sHDydEgxNfJ1sXOydEgxMXOxdbO2cgg0M/Uz8vP1yDJINPO?=',
'=?gb2312?b?0sDC7cqooba0q7Kl0+vWxtf3obdF1ty/r7XaMjc4xtotx7/Hv8GqytYgtPPR89PrsbG+qcyowarxx7Ty1Oy089DNuN/H5c/uxL8=?=',
'=?windows-1252?Q?Conhe=E7a_mais_uma_novidade_LC2!_-_Folhinhas_&_calend=E1rios_2011?=',
'=?UTF-8?Q?Introducing=20Top=20Values=3A=20A=20Special=20Selection=20of=20Great=20Money=20Savers?=',
'spam, spam, and spam']

addrs = [
'=?koi8-r?B?98HbIMHO1MnL0snaydPO2cog28HO0w==?= <l2000ena@almi.ru>',
'"=?gb2312?b?ZXdlZWtseUBpbWFzY2hpbmEuY29t?=" <eweekly@imaschina.com>',
'"=?windows-1252?Q?LC=B2_-_Personaliza=E7=F5es_Especiais?=" <contato@sosgrupo.com.br>',
'"=?UTF-8?Q?Walmart?=" <newsletters@walmart.com>', 

'"Bob Smith" <bob@bob.com>',
'"Smith, Bob" <bob@bob.com>',           # fails: "SmithBob" bob@bob.com'
'"Bob" <bob@bob.com>',
'"Bob;Sm@ith,er!" <bob@bob.com>',

'Bob Smith <bob@bob.com>',
'Bob <bob@bob.com>',
'bob@bob.com',
]


t.insert('end', '\n' + '-'*100 + '\n\n')
t.insert('end', '[test decoding subjs to text/str (recvs)]\n\n')
for subj in subjs:
    t.insert('end', subj + '\n')
    t.insert('end', decodeHeader(subj) + '\n\n')

t.insert('end', '\n' + '-'*100 + '\n\n')
t.insert('end', '[test decoding addrs to text/str (recvs)]\n\n')
for addr in addrs:
    t.insert('end', addr + '\n')
    t.insert('end', decodeAddrHeader(addr) + '\n')           # single addr
    t.insert('end', decodeAddrHeader(addr + ', ' + addr))    # multiple addrs
    t.insert('end', '\n\n')


t.insert('end', '\n' + '-'*100 + '\n\n')
t.insert('end', '[test encoding subjs, and decoding back again (sends + later recvs)]\n\n')
for subj in subjs:
    dec = decodeHeader(subj)        # i18n(1) -> str
    enc = encodeHeader(dec)         # str     -> i18n(2)
    rec = decodeHeader(enc)         # i18n(2) -> str
    t.insert('end', subj + '\n')
    t.insert('end', dec  + '\n')
    t.insert('end', enc  + '\n')
    t.insert('end', rec  + '\n')
    t.insert('end', 'encoded: ' + ('same' if enc == subj else 'differs') + '\n')
    t.insert('end', 'decoded: ' + ('same' if rec == dec  else '**differs**') + '\n\n')


t.insert('end', '\n' + '-'*100 + '\n\n')
t.insert('end', '[test encoding addrs, and decoding back again (sends + later recvs)]\n\n')
for addr in addrs:
    dec  = decodeAddrHeader(addr)    # i18n(1) -> str
    enc  = encodeAddrHeader(dec)     # str     -> i18n(2)
    rec  = decodeAddrHeader(enc)     # i18n(2) -> str
    t.insert('end', addr + '\n')
    t.insert('end', dec  + '\n')
    t.insert('end', enc  + '\n')
    t.insert('end', rec  + '\n')
    t.insert('end', 'encoded: ' + ('same' if enc == addr else 'differs') + '\n')
    t.insert('end', 'decoded: ' + ('same' if rec == dec  else '**differs**') + '\n\n')


t.insert('end', '\n' + '-'*100 + '\n\n')
t.insert('end', '[test encoding addrs, multi/mixed addrs\n\n')
for (ix, addr) in enumerate(addrs): # multi addrs, mix encooding
    addr += ', ' + (addr if ix == 0 else addrs[ix-1])
    dec  = decodeAddrHeader(addr)    # i18n(1) -> str
    enc  = encodeAddrHeader(dec)     # str     -> i18n(2)
    rec  = decodeAddrHeader(enc)     # i18n(2) -> str
    t.insert('end', addr + '\n')
    t.insert('end', dec  + '\n')
    t.insert('end', enc  + '\n')
    t.insert('end', rec  + '\n')
    t.insert('end', 'encoded: ' + ('same' if enc == addr else 'differs') + '\n')
    t.insert('end', 'decoded: ' + ('same' if rec == dec  else '**differs**') + '\n\n')


t.pack()
t.mainloop()



[Home page] Books Code Blog Python Author Train Find ©M.Lutz