[PYTHON] Geben Sie den Dateinamen an, wenn Sie eine an CSV angehängte E-Mail senden

Beim Senden einer E-Mail mit einem CSV-Anhang in Python Als ich es an Windows schickte, wurde es zu "untitled document.txt" und ich war süchtig danach. Machen Sie sich also eine Notiz.

from email.mime.text import MIMEText
from django.core.mail import EmailMessage

filename = 'test.csv'
encoding = 'cp932'
contents = create_csv()  #Erstellen Sie hier eine CSV-Datei
contents = contents.encode(encoding, 'ignore')  #Konvertieren Sie vom Python3-Unicode-Typ in den Str-Typ
csv_file = MIMEText(
    contents,
    'csv',
    encoding,
)

csv_file.set_param('name', filename)  #Ausblick Unterstützung

csv_file.add_header('Content-Disposition', 'attachment',
                    filename=('iso2022-jp', '', filename))

email = EmailMessage(
    'E-Mail-Titel',
    'den Inhalt der E-Mail\n',
    to=['[email protected]'],
    attachments=(csv_file,),
)
email.send()

Der angehängte Dateiteil der tatsächlich gesendeten E-Mail lautet wie folgt.

--===============3879210183231680079==
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Type: text/csv; charset="cp932"; name="test.csv"
Content-Disposition: attachment; filename*=iso2022-jp''test.csv

Dateiinhalt

--===============3879210183231680079==--

EmailMessage ist eine von django bereitgestellte Versandmethode. Fügen Sie die Dateien hinzu, die Sie mit Anhängen anhängen möchten.

Da der MIMEType der angehängten Datei "text / csv" ist, verwenden Sie "email.mine.text.MIMEText". Der Dateiname wird durch "Content-Disposition" angegeben. Dies ist in Ordnung für Mail und Google Mail auf dem Mac, aber Outlook betrachtet diesen Header nicht.

Der Name = "test.csv" am Ende von "Content-Type" ist wichtig, und Outlook scheint den Dateinamen so anzuzeigen.

Bei japanischen Dateien scheint es notwendig zu sein, den Namen mit base64encode zu konvertieren.

Content-Type: application/applefile;
	name="=?utf-8?B?5pel5pys6Kqe44Gu44OV44Kh44Kk44OrLmNzdg==?="

Recommended Posts

Geben Sie den Dateinamen an, wenn Sie eine an CSV angehängte E-Mail senden
Formatieren Sie das Git-Protokoll und erhalten Sie den festgeschriebenen Dateinamen im CSV-Format
Importfehler: Der Name'Flask 'kann nicht importiert werden, wenn der Dateiname in Flask flask.py lautet
Behandeln Sie CSV mit dem Element, das Sie im Namen der Datei analysieren möchten
Extrahieren Sie nur den Dateinamen mit Ausnahme des Verzeichnisses im Verzeichnis
Laden Sie die von Google Colaboratory erstellte CSV-Datei herunter
Was! Der entpackte Dateiname war SJIS! Befehl?
Beim Lesen einer CSV-Datei mit read_csv von Pandas wird die erste Spalte zum Index