Improving parser code readability
- Avoid single character variable names - Use more descriptive variable names (`address` to `address_email`) - Use `default_charset` parameter instead of hard coding `'us-ascii'`
This commit is contained in:
@@ -7,27 +7,26 @@ def decode_mail_header(value, default_charset='us-ascii'):
|
|||||||
try:
|
try:
|
||||||
headers=email.header.decode_header(value)
|
headers=email.header.decode_header(value)
|
||||||
except email.errors.HeaderParseError:
|
except email.errors.HeaderParseError:
|
||||||
return value.encode('us-ascii', 'replace').decode('us-ascii')
|
return value.encode(default_charset, 'replace').decode(default_charset)
|
||||||
else:
|
else:
|
||||||
for i, (text, charset) in enumerate(headers):
|
for index, (text, charset) in enumerate(headers):
|
||||||
try:
|
try:
|
||||||
headers[i]=text.decode(charset or 'us-ascii', 'replace')
|
headers[index]=text.decode(charset or default_charset, 'replace')
|
||||||
except LookupError:
|
except LookupError:
|
||||||
# if the charset is unknown, force default
|
# if the charset is unknown, force default
|
||||||
headers[i]=text.decode(default_charset, 'replace')
|
headers[index]=text.decode(default_charset, 'replace')
|
||||||
|
|
||||||
return u"".join(headers)
|
return u"".join(headers)
|
||||||
|
|
||||||
|
|
||||||
def get_mail_addresses(message, header_name):
|
def get_mail_addresses(message, header_name):
|
||||||
"""
|
"""
|
||||||
retrieve all email addresses from one message header
|
Retrieve all email addresses from one message header.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
addresses = email.utils.getaddresses(h for h in message.get_all(header_name, []))
|
addresses = email.utils.getaddresses(header for header in message.get_all(header_name, []))
|
||||||
|
|
||||||
for i, (address_name, address) in enumerate(addresses):
|
for index, (address_name, address_email) in enumerate(addresses):
|
||||||
addresses[i]={'name': decode_mail_header(address_name), 'email': address}
|
addresses[index]={'name': decode_mail_header(address_name), 'email': address_email}
|
||||||
|
|
||||||
return addresses
|
return addresses
|
||||||
|
|
||||||
Reference in New Issue
Block a user