Ich versuche, unsere Anwendung von Python Mail zu Mailgun zu wechseln, habe aber Probleme mit E-Mails, die Anhänge haben. Speziell PDFs, die von der Anwendung generiert werden (nicht im Dateisystem gespeichert).Anfügen generierte PDF in Mailgun Nachricht Django/Python
Haben Sie keine Probleme beim Senden von E-Mails ohne Anhänge.
Derzeit erzeugen wir die PDF als solche:
pdf = StringIO()
draw_pdf(pdf, params)
pdf.seek(0)
attachment = MIMEApplication(pdf.read())
attachment.add_header("Content-Disposition", "attachment", filename=filename)
pdf.close()
Und dann bringen und sie als solche Mail:
from django.core.mail import EmailMultiAlternatives
msg = EmailMultiAlternatives(subject, text_content, from_email, to_email)
if html_content:
msg.attach_alternative(html_content, "text/html")
if attachment:
msg.attach(attachment)
msg.send()
Funktioniert prima ... wie können wir konvertieren zu einem Mailgun Anruf?
Ich habe darunter verschiedene Dinge ausprobiert, es einfach als Datei vorbei wie (erfolglos):
requests.post(mailgun_url, auth=("api", mailgun_api), data=data, files=attachment)
Die oben funktioniert ohne Anhang. Daten enthalten zu, von, o: Tags ... etc.
Jede Hilfe wäre willkommen. Vielen Dank!
EDIT
ich war in der Lage, es zu bekommen richtig durch die Änderung meiner PDF-Code und bekommen die requests.post strukturiert zu arbeiten:
filename = "pdf_attachment.pdf"
pdf = StringIO()
draw_pdf(pdf, params)
pdf.seek(0)
attachment = ("attachment", (filename, pdf.read()))
r = requests.post(mailgun_url, auth=("api", mailgun_api), data=data, files=[attachment])
ja, war die Frage, wie es zu erhalten an, wenn es nicht ist Datei aus dem Dateisystem zu öffnen. Ich habe es herausgefunden und meine Frage aktualisiert. – Trik