首页 > 解决方案 > 从 Outlook 下载附件并根据字典中的主题+文件名重命名文件

问题描述

所以总而言之,我想要发生的是:

现在我有以下代码:

import win32com.client
import pandas as pd

df = pd.read_excel(r'path')
df = pd.DataFrame(df)
df = df[['Short Name','File Name']]

print(df)

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

inbox = outlook.GetDefaultFolder(6)
subfolder = inbox.Folders(2)

messages = subfolder.Items

for message in messages:
    attachments = message.attachments
    for attachment in attachments:
        attachment.SaveAsFile(r'path' + '\\'+'test' + str(attachment))
        print(format(attachment))

到目前为止,我有这段代码可以将文件下载到指定的文件夹并打印主题的第一个单词。请链接任何文档/学习材料,因为一切对我来说都是新的。

标签: python-3.xpandaswin32com

解决方案


我能够让我的程序正常工作,并希望这对将来的某人有所帮助。还为规则添加了一个例外,

import win32com.client
import pandas as pd
import sys
from io import StringIO

pd.set_option('display.width', pd.util.terminal.get_terminal_size()[0])
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

inbox = outlook.GetDefaultFolder(6)
subfolder = inbox.Folders(2)
messages = subfolder.Items

base = pd.read_excel(r'path to excel file with names')
base = pd.DataFrame(base)
base = base[['Short Name','File Name']]

#print(base)

from datetime import date
data = []
for message in messages:
    sub = ()
    attachments = message.attachments
    subjects = message.Subject
    split = subjects.split()
    df = pd.DataFrame(split)
    df = (df[0:1])
    first = split[0]
    apollo_list = (exceptions)


    for attachment in attachments:
        try:
            if first in apollo_list:
                attachment.SaveAsFile(r'C:\\Users\\user\\Downloads\\Python' + '\\' + 
                first + '-' + 'statement.xls')
            else:
                attach_name = [first + '-' + str(attachment)]
                df1 = pd.DataFrame(attach_name,columns=['Short Name'])
                df2 = df1.merge(base)
                df2 = df2.iloc[0 ,1]
                attachment.SaveAsFile(r'C:\\Users\\user\\Downloads\\Python' + '\\' + 
                df2)

        except:
            print('Not to be sent in SFTP : ' + first + '-' + str(attachment))

推荐阅读