2014-10-24 5 views
7

मैं अपने आवेदन को पायथन मेल से मेलगुन में स्विच करने की कोशिश कर रहा हूं लेकिन मुझे संलग्नक वाले ईमेल के साथ परेशानी हो रही है। विशेष रूप से पीडीएफ जो अनुप्रयोग द्वारा उत्पन्न होते हैं (फाइल सिस्टम में संग्रहीत नहीं)।मेलगुन संदेश में जेनरेट किए गए पीडीएफ को संलग्न करें Django/Python

संलग्नक के बिना ईमेल भेजने में कोई समस्या नहीं है।

वर्तमान में हम इस तरह के रूप पीडीएफ उत्पन्न:

pdf = StringIO() 
draw_pdf(pdf, params) 
pdf.seek(0) 
attachment = MIMEApplication(pdf.read()) 
attachment.add_header("Content-Disposition", "attachment", filename=filename) 
pdf.close() 

और फिर इस तरह के रूप देते हैं और यह मेल:

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() 

अच्छा काम करता है ... कैसे हम एक Mailgun कॉल करने के लिए परिवर्तित कर सकते हैं?

requests.post(mailgun_url, auth=("api", mailgun_api), data=data, files=attachment) 

ऊपर लगाव के बिना ठीक काम करता है:

मैं के रूप में (असफल) है सिर्फ फ़ाइल के रूप में पारित करने सहित विभिन्न चीजों की कोशिश की है। डेटा में, से, ओ: टैग ... आदि

किसी भी मदद की सराहना की जाएगी। धन्यवाद!

संपादित

मैं अपने पीडीएफ कोड बदल रहा है और हो रही है requests.post ठीक से संरचित द्वारा काम करने के लिए इसे पाने के लिए कर रहा था:

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]) 

उत्तर

2

मैं requests.post ठीक से संरचित मेरी पीडीएफ कोड बदल रहा है और हो रही द्वारा काम करने के लिए इसे पाने के लिए कर रहा था:

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] 
1

docs के अनुसार यह फ़ाइलों तर्क होना चाहिए या तो एक शब्दकोश या tuples की एक सूची। यह किसी प्रकार के नाम की तलाश करनी चाहिए।

requests.post(
    ..., 
    files=[("attachment", open("files/test.jpg"))], 
) 
+0

हाँ, मुद्दा यह कैसे संलग्न करने के लिए प्राप्त करने के लिए जब यह एक नहीं है था फाइल सिस्टम से खोलने के लिए फ़ाइल। मैंने इसे समझ लिया है और अपना प्रश्न अपडेट कर लिया है। – Trik

संबंधित मुद्दे