簡體   English   中英

通過 exchangelib 發送受密碼保護的文件

[英]Sending a password protected file over exchangelib

我需要每天發送 email 和 excel 文件,該文件必須受密碼保護。 到目前為止,我一直在使用exchangelib來滿足我的 email 需求。 如果可能的話,我寧願不切換/添加不同的庫。

發送帶有附件的電子郵件不是問題,只需弄清楚如何使用密碼保護和發送即可。 我想我已經接近這個解決方案,壓縮並作為 zip 文件發送,但似乎無法附加 zip 存檔,只是內容。

from exchangelib import Message, Account, FileAttachment
from pyminizip import compress

m = Message(
    account=Account(...),
    subject="Some Subject",
    to_recipients=['somebody@theiremail.com']
)

xl_file_path = 'temp.xlsx'
zip_archive = 'secure.zip'
password = 'HomerSimpson'

compress(
    xl_file_path,
    None,
    zip_archive,
    password,
    5
)

with open(zip_archive, 'wb') as f:
    zip_archive_content = f.read()

m.attach(FileAttachment(
    name=zip_archive,
    content=zip_archive_content
))

m.send()

當它被發送時,它實際上是在發送原始的 excel 文件。 為了向我自己證明這一點,當下載附件並給出“.xlsx”擴展名而不是“.zip”時,它會立即打開。

我知道openpyxl庫中有密碼保護,但這是一個弱保護(不加密)。 我的理解是compress function 實際上是在加密數據——這就是我想要的。

我希望我只是遺漏了一些關於將 zip 存檔作為附件發送的簡單內容,但我會接受其他替代密碼保護文件的方法,或者如果真的沒有其他選擇 - 切換到其他發送電子郵件的方法。

想法?

編輯

我確實驗證了secure.zip存檔與此腳本位於同一目錄中,並且在手動打開時可以正常工作(即它包含我的Excel 文件並且受密碼保護)。

在評論中感謝 Erik。 我需要在FileAttachment中設置content_type='application/zip'

m.attach(FileAttachment(
    name=name,
    content=content,
    content_type='application/zip',
))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM