Sto provando a passare la nostra applicazione da posta Python a Mailgun ma ho problemi con le email che hanno allegati. In particolare PDF che vengono generati dall'applicazione (non memorizzati nel file system).Allegare PDF generato nel messaggio Mailgun Django/Python
Non avere problemi nell'invio di e-mail senza allegati.
Attualmente generiamo il PDF come ad esempio:
pdf = StringIO()
draw_pdf(pdf, params)
pdf.seek(0)
attachment = MIMEApplication(pdf.read())
attachment.add_header("Content-Disposition", "attachment", filename=filename)
pdf.close()
e quindi collegare e posta come tale:
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()
Opere grande ... come possiamo convertire in una chiamata Mailgun?
Ho provato varie cose, tra cui solo di passaggio come file come è (senza successo):
requests.post(mailgun_url, auth=("api", mailgun_api), data=data, files=attachment)
È possibile che questo funziona benissimo senza l'allegato. i dati contengono, da, o: tags ... ecc.
Qualsiasi aiuto sarebbe apprezzato. Grazie!
EDIT
ero in grado di farlo funzionare, cambiando il mio codice PDF e ottenere il requests.post strutturato correttamente:
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])
sì, la questione era come farlo di allegare quando non è un file dal filesystem da aprire. L'ho capito e ho aggiornato la mia domanda. – Trik