Mail-Attachements mit Umlauten werden umbenannt (3.8)
Verfasst: Samstag 28. März 2020, 15:12
Ich will in Windows eine Datei aus einem Ordner per e-mail an mich schicken und das funktioniert grundsätzlich auch, aber wenn im Dateinamen ein Umlaut (oder ein anderes Nicht-ASCII-Zeichen) enthalten ist dann wird das Attachment zwar gesendet aber umbenannt und zwar zB von "KÖST.txt" in "attych3r.txt".
Nachdem der Umlaut im "Subject" kein Problem ist müsste ich wohl irgendwo (im email-header? - wie geht das) festhalten, dass der Dateiname auch Umlaute enthalten kann - weiß vielleicht jemand wie das geht?
Mein Code
import smtplib
import os # damit os.path.join funktioniert
from email.message import EmailMessage
# vgl. https://stackoverflow.com/questions/954 ... on-smtplib
# Variablen zum Testen definieren (das File muss im angegebenen Ordner stehen)
ordner = r'G:\Posteingang\Ordner_Test'
file = 'KÖST.txt' # - Attachement wird umbenannt???
# file = 'KOEST.txt' # - Attachement wird NICHT umbenannt
path = os.path.join(ordner, file) # stellt Dateinamen + Pfad in die Variable
# me == the sender's email address
me = " EINGEBEN " # Mail-Adresse des Absenders!
# you == the recipient's email address
you = " EINGEBEN " # Mail-Adresse des Empfängers!
msg = EmailMessage() # muss VOR Verwendung von msg stehen
msg["From"] = me
msg["Subject"] = file # Umlaute im Subject sind kein Problem?!
msg["To"] = you
msg.set_content("This is the message body")
# msg.add_attachment(open(filename, "r").read(), filename=path)
msg.add_attachment(open(path, "r").read(), filename=file) # Attachement mit Umlaut wird umbenannt!
# s = smtplib.SMTP('smtp.sendgrid.net', 587)
s = smtplib.SMTP( EINGEBEN ) # (" Mail-Server", Port)
# s.login(USERNAME, PASSWORD)
s.send_message(msg)
Für einen Lösungsvorschlag wäre ich sehr dankbar
Nachdem der Umlaut im "Subject" kein Problem ist müsste ich wohl irgendwo (im email-header? - wie geht das) festhalten, dass der Dateiname auch Umlaute enthalten kann - weiß vielleicht jemand wie das geht?
Mein Code
import smtplib
import os # damit os.path.join funktioniert
from email.message import EmailMessage
# vgl. https://stackoverflow.com/questions/954 ... on-smtplib
# Variablen zum Testen definieren (das File muss im angegebenen Ordner stehen)
ordner = r'G:\Posteingang\Ordner_Test'
file = 'KÖST.txt' # - Attachement wird umbenannt???
# file = 'KOEST.txt' # - Attachement wird NICHT umbenannt
path = os.path.join(ordner, file) # stellt Dateinamen + Pfad in die Variable
# me == the sender's email address
me = " EINGEBEN " # Mail-Adresse des Absenders!
# you == the recipient's email address
you = " EINGEBEN " # Mail-Adresse des Empfängers!
msg = EmailMessage() # muss VOR Verwendung von msg stehen
msg["From"] = me
msg["Subject"] = file # Umlaute im Subject sind kein Problem?!
msg["To"] = you
msg.set_content("This is the message body")
# msg.add_attachment(open(filename, "r").read(), filename=path)
msg.add_attachment(open(path, "r").read(), filename=file) # Attachement mit Umlaut wird umbenannt!
# s = smtplib.SMTP('smtp.sendgrid.net', 587)
s = smtplib.SMTP( EINGEBEN ) # (" Mail-Server", Port)
# s.login(USERNAME, PASSWORD)
s.send_message(msg)
Für einen Lösungsvorschlag wäre ich sehr dankbar
