Outlook API电子邮件附件问题
问题描述:
我想在我的Python代码中使用Outlook的REST API来代表已经向我发送他同意的用户发送电子邮件。Outlook API电子邮件附件问题
我能够用自己/我/ 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'error“:{u'message”:u'A丢失或试图读取消息时空内容类型报头被发现。内容类型标题是必需的。',u'code':u'RequestBodyRead'}}
在他们的文档中找不到关于此的任何内容。希望有人能赐教:)
答
对于任何人有这样的问题,这里的环境和修复:
起初,因为我只发送纯文本电子邮件,我请求标题是这样的:
request_headers = {
'Authorization': "Bearer {0}".format(token),
}
和实际要求:
api_response = requests.post(
request_url,
json.dumps(body),
headers=request_headers
)
正如你可能已经注意到我并没有在我的头发送任何内容类型(不知道为什么),但一切都很顺利,从而直到我决定添加附件。
好像如果我request_headers将包含内容类型太多,一切都会顺利:
request_headers = {
'Authorization': 'Bearer {0}'.format(refreshed_token),
'Content-Type': 'application/json'
}