summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Reichel <sre@ring0.de>2013-02-23 22:53:51 +0100
committerSebastian Reichel <sre@ring0.de>2013-02-23 22:53:51 +0100
commit72c29aef1e7ac67149e49d362093fea956edd6bf (patch)
tree415265611fc89dfc06c699d8fbca3a3e64df5740
parentb388bbd8f9e4363830d971046a9f256b963056c3 (diff)
downloadserial-barcode-scanner-72c29aef1e7ac67149e49d362093fea956edd6bf.tar.bz2
fix umlauts in receiver
-rw-r--r--invoice/mailhelper.py27
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