使用mailgun(python)发送带附件的电子邮件时出错

时间:2016-11-15 07:42:38

标签: python google-app-engine mailgun

我尝试使用MailGun发送带有自动生成的pdf文件作为附件的电子邮件,但是我从请求库中收到错误。它使我疯狂,因为我使用的代码与示例中的完全相同。

我收到此错误:列表对象没有属性'更新'

这是我的代码:

# Generation of the pdf file        
pdf = StringIO.StringIO()
pisa.CreatePDF("<Some html code>", dest=pdf, encoding='utf8')

# Sending the email

requests.post("https://api.mailgun.net/v3/<MY_DOMAIN>/messages",
        auth=("api", "<MY_API_KEY>"),
        files = [("attachment", pdf.getvalue())],
        data={"from": "sender@email.com",
              "to": ["Jhon Doe", "destiny@email.com"],
              "subject": "Hello",
              "text": "Trying to send an attachment!"})

如果我删除文件行它可以工作,但我需要发送附件。 我试过更改我发送的文件类型。我也尝试过更简单的事情:

files = [("attachment", "Bla, bla bla")]

但我得到的错误是关于该行的格式(列表)。

请帮忙吗?

1 个答案:

答案 0 :(得分:2)

post参数“files”必须是dict!

试试这个:

# Generation of the pdf file        
pdf = StringIO.StringIO()
pisa.CreatePDF("<Some html code>", dest=pdf, encoding='utf8')

# Sending the email
requests.post("https://api.mailgun.net/v3/<MY_DOMAIN>/messages",
        auth=("api", "<MY_API_KEY>"),
        files={"attachment": pdf.getvalue()},
        data={"from": "sender@email.com",
              "to": ["Jhon Doe", "destiny@email.com"],
              "subject": "Hello",
              "text": "Trying to send an attachment!"})

有关使用请求库上传文件的更多信息,请访问:http://docs.python-requests.org/en/master/user/quickstart/#post-a-multipart-encoded-file