[英]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.