使用Python从Outlook删除电子邮件时遇到问题

时间:2017-10-25 10:08:55

标签: python outlook

当使用生成器在Outlook中迭代电子邮件时,我在删除它时遇到一些问题。如果我在消息上调用delete,则生成器将跳过"跳转"在下一个项目上,它只会处理我的收件箱中的一半电子邮件。

for message in scanner.scan_emails():
            message.Delete()
            deleted_counter += 1

作为一种解决方法,我将所有消息保存在列表中,然后循环遍历它们:     对于emails_to_delete_list中的消息:             message.Delete()

有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

See VB reference向后使用for循环:

items = outlookObject.Items
for i in range(items.Count, 0, -1):
    items.Item(i).Delete()

答案 1 :(得分:0)

对于Windows,您可以使用win32com(pip安装pypiwin32)。 6是您的主要“收件箱”。   遍历文件夹和每封电子邮件,然后调用“删除”。

import time
import win32com.client


def email_deleter():

    folders = ["BORK", "FOO", "SPAM", "EGGS"]

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

    for folder in folders:
        emails = outlook.GetDefaultFolder(6).Folders[folder]
        for email in emails.Items:
            email.Delete()


if __name__ == "__main__":

    for i in range(10):
        time.sleep(0.1)
        email_deleter()