【问题标题】:Outlook emails download using Python from other accounts使用 Python 从其他帐户下载 Outlook 电子邮件
【发布时间】:2020-10-13 15:10:14
【问题描述】:

我在 Outlook 中有 2 个帐户。我想从收件箱中下载来自第二个帐户(不是我的主帐户)的所有邮件。

我编写了一个代码,可以从我的主帐户下载所有收件箱邮件。此代码运行良好,并将所有邮件存储到本地文件夹 email_folder 代码如下:

from win32com.client import Dispatch
import os
import re
os.chdir("D:\\email_folder")

outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(1)
messages = inbox.items
for message in messages:
    message = messages.GetNext()
    name = str(message.subject)
    name = re.sub('[^A-Za-z0-9]+', '', name)+'.msg'    
    message.SaveAs(os.getcwd()+'//'+name)

但问题是,当我尝试从第二个帐户下载电子邮件时,它无法正常工作。我检查了辅助帐号是 3,收件箱 - 子文件夹是 13。

我已经用下面的函数找到了。

import win32com.client as win32
outlook = win32.Dispatch("Outlook.Application")
namespace = outlook.GetNamespace("MAPI")
root_folder = namespace.Folders.Item(3)
def menu(outlookFolderItem):
    for i in range(0,20):
        try:
            print(i,outlookFolderItem.Folders(i).Name)
        except:
            pass

# example
menu(root_folder)

现在我想从收件箱中下载辅助帐户的电子邮件。我编写了以下代码,但它不起作用。代码如下:

from win32com.client import Dispatch
import os
import re
os.chdir("D:\\email_folder")

from win32com.client import Dispatch
outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
sub_folder = outlook.Folders(3).Folders(13)
messages = sub_folder.items
for message in messages:
    message = messages.GetNext()
    name = str(message.subject)   
    message.SaveAs(os.getcwd()+'//'+name)

请帮助我。谢谢

【问题讨论】:

    标签: python outlook


    【解决方案1】:

    切勿对文件夹索引进行硬编码。如果您想要其他商店的默认文件夹(例如收件箱),请先打开该商店(使用 Namespace.Stores 集合),然后使用 Store.GetDefaultFolder 而不是 Namespace.GetDefaultFolder。

    【讨论】:

    • 谢谢德米特里。你能帮我做最后一件事吗?我想在保存邮件的同时在邮件名称中添加迭代号(目前名称相同)。它应该像这样读取客户信息 1、客户信息 2。我试图使用枚举函数,但无法让它工作。提前致谢。
    • 这是一个不同的问题。如果答案对您有用,请将其单独发布并标记为已回答。
    猜你喜欢
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 2020-07-20
    • 2015-11-14
    • 2020-06-30
    • 1970-01-01
    • 2015-03-19
    • 2015-07-26
    相关资源
    最近更新 更多