当前位置: 首页 > 知识库问答 >
问题:

使用python[复制]发送附加文件

申屠鹏
2023-03-14

我正在尝试使用请求发送带有Mailgun API的附加文件的电子邮件。邮递

在他们的文档中,他们提醒您在发送附件时必须使用多部分/表单数据编码,我正在尝试以下方法:

import requests
MAILGUN_URL = 'https://api.mailgun.net/v3/sandbox4f...'
MAILGUN_KEY = 'key-f16f497...'


def mailgun(file_url):
    """Send an email using MailGun"""

    f = open(file_url, 'rb')

    r = requests.post(
        MAILGUN_URL,
        auth=("api", MAILGUN_KEY),
        data={
            "subject": "My subject",
            "from": "my_email@gmail.com",
            "to": "to_you@gmail.com",
            "text": "The text",
            "html": "The<br>html",
            "attachment": f
        },
        headers={'Content-type': 'multipart/form-data;'},
    )

    f.close()

    return r


mailgun("/tmp/my-file.xlsx")

我已经定义了头,以确保内容类型是multipart/formdata,但是当我运行代码时,我得到一个400状态,原因是:请求错误

发生了什么?我需要确保我使用的是多部分/表单数据,并且正确使用了附件参数

共有1个答案

朱修真
2023-03-14

您需要使用文件关键字参数。这是请求中的文档。

还有一个来自Mailgun文档的示例:

def send_complex_message():
    return requests.post(
        "https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/messages",
        auth=("api", "YOUR_API_KEY"),
        files=[("attachment", open("files/test.jpg")),
               ("attachment", open("files/test.txt"))],
        data={"from": "Excited User <YOU@YOUR_DOMAIN_NAME>",
              "to": "foo@example.com",
              "cc": "baz@example.com",
              "bcc": "bar@example.com",
              "subject": "Hello",
              "text": "Testing some Mailgun awesomness!",
              "html": "<html>HTML version of the body</html>"})

因此,请将您的帖子修改为:

r = requests.post(
    MAILGUN_URL,
    auth=("api", MAILGUN_KEY),
    files = [("attachment", f)],
    data={
        "subject": "My subject",
        "from": "my_email@gmail.com",
        "to": "to_you@gmail.com",
        "text": "The text",
        "html": "The<br>html"
    },
    headers={'Content-type': 'multipart/form-data;'},
)

这对你来说应该很好。

 类似资料:
  • 本文向大家介绍Android使用Javamail发送Email群发加附件,包括了Android使用Javamail发送Email群发加附件的使用技巧和注意事项,需要的朋友参考一下 之前写了一篇关于Android中发送Email的文章,里面用到的是隐式的intent来激活系统自带的邮件发送功能。 今天花了一天来自己实现这个邮件发送功能。 这里用gmail作为发送方的邮箱,其他网易,新浪什么的应该也o

  • 问题内容: 使用python发送电子邮件时如何添加文档附件?我收到了要发送的电子邮件(请忽略:我正在循环发送电子邮件,每5秒发送一次,仅用于测试目的,我希望每30分钟发送一次,只需将5更改为1800) 到目前为止,这是我的代码。我如何从计算机上附加文档? 问题答案: 这是对我有用的代码-使用python发送带有附件的电子邮件

  • 本文向大家介绍python实现发送QQ邮件(可加附件),包括了python实现发送QQ邮件(可加附件)的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现发送QQ邮件的具体代码,供大家参考,具体内容如下 东西比较简单,简单讲一下,直接贴代码了,其他邮箱都类似。 1.首先在qq 邮箱里面把stmp服务 打开 2.拉到下面,开启第一个,发送短信验证后会得到一个授权码:  3.

  • 问题内容: 我需要通过邮件发送pdf文件,可以吗? 我想念什么? 问题答案: 我在评论中同意@MihaiIorga–使用PHPMailer脚本。听起来您正在拒绝它,因为您想要更简单的选择。相信我,与尝试使用PHP的内置函数自己相比,PHPMailer 在很大程度上是 更容易的选择。PHP的功能确实不是很好。 要使用PHPMailer: 从此处下载PHPMailer脚本 提取档案并将脚本的文件夹复制

  • 我使用以下Ajax方法将请求的数据(发送邮件)发送到服务器端。我还必须发送2个附加文件到服务器端。有人能帮我怎么做吗?我需要在这个文件中进行上传,我没有任何其他服务器端的php脚本,只是在同一个文件中使用一些函数来处理数据。此环境仅在wordlfpress中,而不只是平面ajax。另一个话题没有回答这个问题。 代码片段: 有人能帮我怎么做吗?非常感谢。 我要找的答案如下: 此代码还将其他数据发布到

  • 问题内容: 我想使用Python制作netcdf文件的副本。 关于如何读取或写入netcdf文件,有很多很好的示例,但是也许还有一个很好的方法,可以进行变量的输入,然后输出到另一个文件。 一个好的方法很不错,以便以最低的成本获得尺寸和尺寸变量到输出文件。 问题答案: 我在python netcdf上 找到了此问题的答案:制作了所有变量和属性的一个副本,但一个副本,但我需要对其进行更改以使其与我的p