小编0_j*_*ump的帖子

Python 3:通过 uid (imaplib) 将电子邮件移至垃圾箱

我想将一封电子邮件从我的收件箱移到垃圾箱文件夹,我不想永久删除该电子邮件,我希望它经历在垃圾箱中等待 30 天才能永久删除的过程。

1.登录:

mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login("example@gmail.com", "example")
Run Code Online (Sandbox Code Playgroud)

2.在我的收件箱中得到了uid列表:

mail.select("inbox")
result, data = mail.uid('search', None, "ALL")
uidList = data[0].split()
Run Code Online (Sandbox Code Playgroud)

3.处理过这些邮件:

#processEmails returns the uids of the emails that I need
#not really important for the purposes of this question

newUidList = processEmails(uidList)
Run Code Online (Sandbox Code Playgroud)

4.删除邮件中的邮件 newUidList

for uid in newUidList:
    mail.uid('STORE',uid, '+FLAGS', '(\\Deleted)')
Run Code Online (Sandbox Code Playgroud)

我认为这条线mail.uid('STORE',uid, '+FLAGS', '(\\Deleted)')可以解决问题(因为这是我在互联网上找到的)。但是在这里问这个问题,你可能已经正确地猜到了它没有。

发生了什么事?

当我执行此脚本时,电子邮件按计划从收件箱中消失了。但是当我访问垃圾文件夹时,那里什么也没有。所以我想也许它们被永久删除了。

但他们不是。当我看到我的电子邮件存储空间正在快速填满时,我注意到了这一点,这意味着我的电子邮件仍在某处。

我进入“所有电子邮件”文件夹,它们就在那里。

所以我的问题是...

  1. 我如何得到我想要的结果?这是通过其 UID 将电子邮件移动到垃圾箱文件夹。
  2. 为什么它没有做我认为它会做的事情?我要求解释这条线mail.uid('STORE',uid, '+FLAGS', '(\\Deleted)')

而最重要的是...

谢谢您的意见 :)

python email imaplib python-3.x

4
推荐指数
1
解决办法
4967
查看次数

多部分电子邮件中的"部分"是什么?

一点背景......

前段时间,我在Python上编写了一个处理电子邮件消息的程序,总有一件事就是知道电子邮件是否是"多部分".

经过一些研究,我知道它与包含HTML或附件等的电子邮件有关......但我并不是真的理解它.

我对它的使用仅限于2个实例:

1.当我必须从原始电子邮件中保存附件时

我刚刚在互联网上发现了这一点(可能在这里 - 很抱歉没有记下编写它的人,但我似乎无法再找到他了:/)并将其粘贴在我的代码中

def downloadAttachments(emailMsg, pathToSaveFile):
    """
    Save Attachments to pathToSaveFile (Example: pathToSaveFile = "C:\\Program Files\\")
    """
    att_path_list = []
    for part in emailMsg.walk():
        # multipart are just containers, so we skip them
        if part.get_content_maintype() == 'multipart':
            continue

        # is this part an attachment ?
        if part.get('Content-Disposition') is None:
            continue

        filename = part.get_filename()

        att_path = os.path.join(pathToSaveFile, filename)

        #Check if its already there
        if not os.path.isfile(att_path) :
            # finally write the stuff
            fp = open(att_path, 'wb') …
Run Code Online (Sandbox Code Playgroud)

python email imap python-3.x

2
推荐指数
1
解决办法
1018
查看次数

标签 统计

email ×2

python ×2

python-3.x ×2

imap ×1

imaplib ×1