Outlook API电子邮件附件问题

时间:2017-04-04 18:25:19

标签: python rest email outlook outlook-api

我尝试在我的python代码中使用Outlook的REST API代表已经征得他同意的用户发送电子邮件。

我能够使用带有以下有效负载的/ me / sendmail节点成功发送文本电子邮件:

    email_payload = {
        "Message": {
            "Subject": email_subject,
            "Body": {
                "ContentType": "Text",
                "Content": email_body
            },
            "ToRecipients": [
                {
                    "EmailAddress": {
                        "Address": to
                    }
                }
            ]
        }
    }

但是,在尝试添加附件时(基于他们的文档),我遇到了一些问题:

        email_payload["Message"]["Attachments"] = [
            {
                "ContentType": "application/pdf",
                "Name": "{0}".format("something.pdf"),
                "ContentBytes": base64.b64encode(attachment.read())
            }
        ]

问题包括415响应状态代码,其中包含以下内容: {u'错误':{u' message':u'尝试阅读邮件时发现了丢失或空的内容类型标头。内容类型标题是必需的。',u'代码':u' RequestBodyRead'}}

在他们的文档中找不到任何相关内容。希望有人能赐教我:)

1 个答案:

答案 0 :(得分:0)

对于遇到此类问题的其他人,请参阅上下文并修复:

最初,由于我只发送纯文本电子邮件,因此我的请求标题如下所示:

request_headers = {
    'Authorization': "Bearer {0}".format(token),
}

实际要求:

    api_response = requests.post(
        request_url,
        json.dumps(body),
        headers=request_headers
    )

你可能已经注意到我没有在我的标题中发送任何内容类型(不确定原因),但是到目前为止一切顺利,直到我决定添加附件。

似乎我的request_headers也包含Content-Type,一切都会顺利进行:

  request_headers = {
             'Authorization': 'Bearer {0}'.format(refreshed_token),
             'Content-Type': 'application/json'
         }