read encoding from header

This commit is contained in:
fordprefect
2022-03-01 16:03:17 +01:00
parent 62141b366f
commit 55fe04a16b

View File

@@ -65,7 +65,19 @@ rules = [
# read input and find recipient # read input and find recipient
mail = "".join(sys.stdin.readlines()) mail = "".join(sys.stdin.readlines())
recipient = email.parser.HeaderParser().parsestr(mail)["To"] parsedmail = email.parser.HeaderParser().parsestr(mail)
recipient = parsedmail["To"]
if parsedmail["Content-type"] is not None:
for part in parsedmail["Content-type"].lower().split(";"):
if part.find("charset") >= 0:
encoding = part.split("=")[1].replace("\"", "").replace("'", "")
break
# default fallback
encoding = "utf-8"
else:
# default fallback
encoding = "utf-8"
for rule, disclaimer in rules: for rule, disclaimer in rules:
if recipient.find(rule) >= 0: if recipient.find(rule) >= 0:
@@ -76,7 +88,7 @@ for rule, disclaimer in rules:
"--htmltoo", "--htmltoo",
"--force-for-bad-html", "--force-for-bad-html",
], ],
input=mail.encode(), input=mail.encode(encoding),
capture_output=True capture_output=True
) )
@@ -91,4 +103,4 @@ for rule, disclaimer in rules:
break break
sendmailprocess = subprocess.Popen(["/usr/bin/sendmail", "-G", "-i"] + sys.argv[1:], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE) sendmailprocess = subprocess.Popen(["/usr/bin/sendmail", "-G", "-i"] + sys.argv[1:], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
sendmailprocess.communicate(input=mail.encode('utf-8')) sendmailprocess.communicate(input=mail.encode(encoding))