如何使用 Python 和 Microsoft Graph API 发送超过 4MB 的电子邮件附件

时间:2021-02-28 00:36:07

标签: python microsoft-graph-api microsoft-graph-mail

一直在网络上滚动,包括在 Stackoverflow 上,但找不到我的问题的答案,所以我想知道是否有人知道如何提供帮助。我正在使用 Python 并设法使以下代码适用于我的应用程序。此应用程序通过我的公司 O365 帐户发送电子邮件。它运行良好,可以发送电子邮件,并且还可以处理小附件(小于 4MB)。这是:

from O365 import Account,MSGraphProtocol
client_ID = ''
secret = ''
credentials = (client_ID, secret)
protocol = MSGraphProtocol(api_version='beta')

account = Account(credentials,protocol=protocol)
m = account.new_message()
m.to.add('email@email.com')
m.subject = 'sCRIPT FOR AUTOMATION'
m.body = "This is a test!"


m.attachments.add('big_file.csv') #takes a list for multiple files. However, 4MB size limit.

m.send()

这一切都很好,但是,我需要它来处理更大的附件。我觉得我已经尝试了所有我能想到的方法来使它工作,但是,没有取得任何成功。我在这里看到一些文档,建议将协议更改为 MsGraphProtocol 和 api 版本到测试版(请参阅 https://pypi.org/project/O365/),我尝试过但没有成功。我已经阅读了很多关于这个问题的信息,似乎微软已经意识到了这一点,但他们声称有一个解决方案,即创建一个上传会话并分块上传我的大文件?我不知道从哪里开始。我尝试查看此文档 https://docs.microsoft.com/en-us/graph/outlook-large-attachments?tabs=httphttps://docs.microsoft.com/en-us/graph/api/attachment-createuploadsession?view=graph-rest-beta&tabs=http。然而,这些文档都不是为 Python 程序员编写的,更不用说初学者/中级用户了,所以很快就迷失了方向。我有点明白这个问题。请求不能大于 4MB,因此我需要迭代我的上传。我对 python 中的 for 循环有所了解,但是,我还没有发现如何将本文档应用于我的特定用例特别清楚。如果有人可以帮助/之前在 Python 中做过类似的事情,请告诉我!任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

添加代码示例:

#!/usr/bin/python
print "GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var attachmentItem = new AttachmentItem{
AttachmentType = AttachmentType.File,
Name = \"flower\",
Size = 3483322 }; 
await graphClient.Me.Messages[\"AAMkADI5MAAIT3drCAAA=\"].Attachments
.CreateUploadSession(attachmentItem)
.Request()
.PostAsync();\n";