日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python exchangelib 删除邮件_Python优雅的操作Exchange邮箱——exchangelib模块使用介绍...

發(fā)布時間:2024/7/23 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python exchangelib 删除邮件_Python优雅的操作Exchange邮箱——exchangelib模块使用介绍... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近想把公司郵箱的附件給下載下來,附件好多都是我整理的報告和文檔,一個個去下載明顯太傻,碰到這種問題第一個想到的就是Python啦

需求很簡單,只需要登錄自己的Exchange郵箱,然后遍歷所有郵件,有附件的就下載下來。

可是最主要的一步卻難倒我了,連接Exchange郵箱比較麻煩,最后找到了exchangelib這個模塊。

這個模塊網上的教程不多,所以這里記錄下使用過程。

安裝exchangelib

exchangelib的github地址可以點擊這里,可通過PyPi直接進行安裝:

pip3 install exchangelib

具體編碼

引入模塊

exchangelib模塊挺多的,其中Account, Credentials用來連接郵箱的,其他的根據你自身需求來吧,截圖是所有模塊:

截圖1

連接郵箱

登錄郵箱編碼還是比較簡單的:

credentials = Credentials('域名\用戶名', '密碼')

account = Account('郵箱', credentials=credentials, autodiscover=True)

如果你想容錯,比如獲取大量郵件時可能會超時之類的,像我的需求需要下載大量附件時,我們可以創(chuàng)建為服務賬戶:

credentials = ServiceAccount(username='域名\用戶名', password='密碼')

account = Account('郵箱', credentials=credentials, autodiscover=True)

發(fā)送郵件

雖然發(fā)送郵件和我的需求沒什么關系,但稍微試驗看一下,還是很方便的,幾行代碼就搞定了。

m = Message(

account=account,#之前申明的賬戶

subject='#標題',

body='#郵件內容',

to_recipients = [Mailbox(email_address='#收件人')]

)

m.send()

文件夾(Folders)

如果要查詢你的郵件,就要使用到文件夾這個概念,比如收件箱account.inbox,發(fā)件箱account.outbox,我們以收件箱為例,獲取收件箱的10條郵件并打印出來:

for item in account.inbox.all().order_by('-datetime_received')[:100]:

print(item.subject, item.sender, item.datetime_received)

如果你的收件箱下還有文件夾,可以使用children屬性:

for item in account.inbox.children:

print('文件夾名稱:'+item.name)

針對郵件,exchangelib還提供了查詢篩選功能,比如官方的例子:

filtered_items = my_folder.filter(subject__contains='foo').exclude(categories__icontains='bar')

但是我試驗了一些,還是比較慢的,可能我的郵件比較多吧。

附件

exchangelib對于附件也有很好的支持,官方例子如下:

for item in my_folder.all():

for attachment in item.attachments:

if isinstance(attachment, FileAttachment):

local_path = os.path.join('/tmp', attachment.name)

with open(local_path, 'wb') as f:

f.write(attachment.content)

print('Saved attachment to', local_path)

elif isinstance(attachment, ItemAttachment):

if isinstance(attachment.item, Message):

print(attachment.item.subject, attachment.item.body)

我的需求

最后貼下我的需求,下載我的郵箱中指定文件夾下所有的附件:

credentials = ServiceAccount(username='域名\用戶名', password='密碼')

account = Account('郵箱', credentials=credentials, autodiscover=True)

print('1.郵箱連接成功')

for item in account.inbox.children:

print('2.文件夾名稱:'+item.name)

if item.name=='Reports':#只要Reports文件夾下的附件

index=0

totalcount=0

page=0

while True:

for model in item.all()[page:page+50]:

index=index+1

print(str(index)+'-開始:'+model.subject)

for attachment in model.attachments:

if isinstance(attachment, FileAttachment):

with open('/Users/cavin/Desktop/files/' + attachment.name, 'wb') as f:

f.write(attachment.content)

if totalcount==index:

break

page=page+50

totalcount=index

總結

利用python來提高你的工作效率還是不錯的,你的想到的組件基本上都有,幾行代碼輕松搞定,棒棒噠

總結

以上是生活随笔為你收集整理的python exchangelib 删除邮件_Python优雅的操作Exchange邮箱——exchangelib模块使用介绍...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。