如何将附件文件存储在数据库中的电子邮件中?

How to store attachment file in an email in a database?

我使用此代码在 Outlook 中存储来自特定地址电子邮件的附件 xlsx 文件,但现在我想将这些文件存储在 SQL 服务器的数据库中,而不是文件夹中在我的笔记本电脑上?您知道如何将这些文件直接存储在数据库中吗?非常感谢。

outputDir = r"C:\Users\CMhalla\Desktop\Hellmann_attachment"
i=0
for m in messages:
    if m.SenderEmailAddress == 'adress@outlook.com':
       body_content=m.Body
       for attachment in m.Attachments:
           i=i+1
           attachment.SaveAsFile(os.path.join(outputDir,attachment.FileName + str(i)+'.xlsx'))

Oultook 对象模型不提供任何 属性 或直接将附件保存到 DB 的方法。您需要先将文件保存在磁盘上,然后以任何方便的方式将其添加到 Db。

但是,您可能有兴趣阅读 Outlook 中附加项目的字节数组。在这种情况下,您可以将字节数组直接写入 Db 而无需触及可能会降低整体性能的文件系统。 PR_ATTACH_DATA_BIN 属性 包含通常通过对象链接和嵌入 (OLE) IStream 接口访问的二进制附件数据。当PR_ATTACH_METHOD属性的值为ATTACH_BY_VALUE时,这个属性持有附件,这是通常的附件方式,也是唯一需要支持的方式。

Outlook 对象模型无法使用 PropertyAccessor.GetProperty 检索大型二进制或字符串 MAPI 属性。在低级别(扩展 MAPI)上,IMAPIProp::GetProps() 方法不适用于大型 PT_STING8 / PT_UNICODE / PT_BINARY 属性。它们必须按以下方式打开为 IStream - IMAPIProp::OpenProperty(PR_ATTACH_DATA_BIN, IIS_IStream, ...)。有关详细信息,请参阅 PropertyAccessor.GetProperty( PR_ATTACH_DATA_BIN) fails for outlook attachment

您可以使用 Microsoft Power Automate 将附件保存在驱动器中,然后将文件上传到 Python 环境。