【问题标题】:Problem with deleting emails using poplib使用 poplib 删除电子邮件的问题
【发布时间】:2019-09-01 03:07:03
【问题描述】:

我编写了一个程序来使用 poplib 读取 Outlook 电子邮件并将过滤后的数据仅输出到 json 中,然后删除所有电子邮件。但是使用我编写的代码并不是删除所有电子邮件而只删除一封电子邮件。谁能帮帮我。

代码:

def read_mail_from_pop3_server():
    try:
        conn = poplib.POP3_SSL(EMAIL_SERVER, 995)
        print('Logging into Office365')
        conn.user(EMAIL_USER)
        conn.pass_(EMAIL_PASSWORD)
        mail_count = len(conn.list()[1])
        print("You have %d email messages." % mail_count)
        output = []
        for i in range(mail_count):
            raw_email = b"\n".join(conn.retr(i + 1)[1])
            msg = email.message_from_string(raw_email)
            items_list = msg.items()
            dict_items = OrderedDict(items_list)
            email_body = ''
            if msg.is_multipart():
                ...
            else:
                ...
            dict_items.update({'Body': email_body})
            dict_obj = TatvamObjDict.load_fromFile('MailJsonData.Json')

            dict_obj.review.original_text = dict_items['Body'].lstrip() if 'Body' in dict_items else "".strip()
            ...

            if "<xyz@gmail.com>" in dict_items.itervalues():
                output.append(dict_obj)

            with open('del_check.json', 'w') as f:
                json.dump(output, f, indent=4, sort_keys=True)
                f.write('\n')

       # # deleting emails directly by email index(count)
       conn.dele(mail_count)
       conn.quit()

【问题讨论】:

    标签: python poplib


    【解决方案1】:

    您只需标记一条消息,索引为 mail_count 以供删除(退出时,根据 poplib 文档的说明)。您应该缩进该行以将其放入 for 循环中,然后为其提供正确的消息索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-22
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      • 2017-05-14
      • 1970-01-01
      相关资源
      最近更新 更多