diff options
author | Sebastian Reichel <sre@ring0.de> | 2013-02-23 22:53:51 +0100 |
---|---|---|
committer | Sebastian Reichel <sre@ring0.de> | 2013-02-23 22:53:51 +0100 |
commit | 72c29aef1e7ac67149e49d362093fea956edd6bf (patch) | |
tree | 415265611fc89dfc06c699d8fbca3a3e64df5740 /invoice | |
parent | b388bbd8f9e4363830d971046a9f256b963056c3 (diff) | |
download | serial-barcode-scanner-72c29aef1e7ac67149e49d362093fea956edd6bf.tar.bz2 |
fix umlauts in receiver
Diffstat (limited to 'invoice')
-rw-r--r-- | invoice/mailhelper.py | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/invoice/mailhelper.py b/invoice/mailhelper.py index 0da8cd8..ae9d3ac 100644 --- a/invoice/mailhelper.py +++ b/invoice/mailhelper.py @@ -7,6 +7,8 @@ from email.header import Header import time, email.utils, smtplib +import sys + class MAIL(object): def __init__(self, server, port, username, password): self.__server = server @@ -15,6 +17,29 @@ class MAIL(object): self.__password = password pass + def __format_addresses(self, addresses, header_name=None, charset=None): + header=email.header.Header(charset=charset, header_name=header_name) + for i, (name, addr) in enumerate(addresses): + if i!=0: + # add separator between addresses + header.append(',', charset='us-ascii') + # check if address name is a unicode or byte string in "pure" us-ascii + try: + # check id byte string contains only us-ascii chars + name.encode('us-ascii') + except UnicodeError: + # Header will use "RFC2047" to encode the address name + # if name is byte string, charset will be used to decode it first + header.append(name, charset='utf-8') + # here us-ascii must be used and not default 'charset' + header.append('<%s>' % (addr,), charset='us-ascii') + else: + # name is a us-ascii byte string, i can use formataddr + formated_addr=email.utils.formataddr((name, addr)) + # us-ascii must be used and not default 'charset' + header.append(formated_addr, charset='us-ascii') + return header + def generate_mail(self, receiver, subject, message, attachments = None, timestamp=time.time(), cc = None): msg = MIMEMultipart() msg["From"] = "KtT-Shopsystem <shop@kreativitaet-trifft-technik.de>" @@ -24,7 +49,7 @@ class MAIL(object): if receiver[0].encode("ascii"): msg["To"] = receiver[0] + " <" + receiver[1] + ">" except UnicodeError: - msg["To"] = Header(receiver[0], 'utf-8') + " <" + receiver[1] + ">" + msg["To"] = self.__format_addresses([receiver]) if cc != None: msg["Cc"] = cc |