Python邮件附件保存

好早之前有遇到求助是关于把邮件附件下载,然后上传到服务器。当时没有好好珍惜,现在重新回顾把这个问题来解决吧。
outlook是工作沟通的基本工具,在工作上也有写过自动获取邮件正文并保存到文件中。因为微软提供很好的api接口,因此附件保存当然不是大事。
我们将通过win32com库来解决附件保存的问题,废话不多说直接上码:

import os,sys
import win32com.client

#启动实例
outlook = win32com.client.Dispathch('outlook.applocation').GetNamespace("MAPI")
accounts= win32com.client.Dispathch('outlook.applocation').Session.Accounts

#设置附件存储位置
path = 'D:\\temp\\'

#定义所有文件中的附件都保存函数
def attachement_save():
    for account in accounts:
        print("当前登录账号:",account.DeliveryStore.DisplayName)
        for folder in account_folder,Folders:
            save_path = path + folder.Name
            if not so.path.isdir(save_path):
                os.makedirs(save_path)
            for Item in folder.Items:
                if Item.Attachments.count:
                    attachments_from_Items(Item.Attachments,save_path)

# 定义当发件人为  sendername  保存附件到指定的文件夹中,无附件则不处理函数
def someone_attachement_save(sendername):
    for account in accounts:
        print("当前登录账号:", account.DeliveryStore.DisplayName)
        for folder in account_folder.Folders:
            for Item in folder.Items:
                try:
                    if sendername in str(Item.SenderEmailAddress):
                        if Item.Attachments.count:
                            save_path = path + sendername
                            if not so.path.isdir(save_path):
                                os.makedirs(save_path)
                            attachments_from_Items(Item.Attachments, save_path)
                except:
                    pass

# 定义保存附件函数
def attachments_from_Items(Item_Attachments, path):
    for attachment in Item_Attachments:
        try:
            full_path = path + attachment.FieName
            attachment.SaveAsFile(full_path)
            print("保存成功")
        except:
            pass

if __name__ == __main__ :
#某人发送的附件进行保存
    someone_attachement_save('lihong')
#所有文件夹下附件都保存    
    attachement_save()





你可能感兴趣的:(Python邮件附件保存)