当前位置: 首页 > 面试题库 >

使用Python和imaplib在GMail中移动电子邮件

梁丘翔
2023-03-14
问题内容

我希望能够使用Python将GMail中的电子邮件从收件箱移动到另一个文件夹。我正在使用imaplib,无法弄清楚该怎么做。


问题答案:

没有针对IMAP的明确移动命令。您将必须先执行,COPY后跟一个STORE(带有适当的标志以指示删除),最后执行expunge。下面给出的示例用于将消息从一个标签移动到另一个标签。您可能需要添加更多错误检查。

import imaplib, getpass, re
pattern_uid = re.compile('\d+ \(UID (?P<uid>\d+)\)')

def connect(email):
    imap = imaplib.IMAP4_SSL("imap.gmail.com")
    password = getpass.getpass("Enter your password: ")
    imap.login(email, password)
    return imap

def disconnect(imap):
    imap.logout()

def parse_uid(data):
    match = pattern_uid.match(data)
    return match.group('uid')

if __name__ == '__main__':
    imap = connect('<your mail id>')
    imap.select(mailbox = '<source folder>', readonly = False)
    resp, items = imap.search(None, 'All')
    email_ids  = items[0].split()
    latest_email_id = email_ids[-1] # Assuming that you are moving the latest email.

    resp, data = imap.fetch(latest_email_id, "(UID)")
    msg_uid = parse_uid(data[0])

    result = imap.uid('COPY', msg_uid, '<destination folder>')

    if result[0] == 'OK':
        mov, data = imap.uid('STORE', msg_uid , '+FLAGS', '(\Deleted)')
        imap.expunge()

    disconnect(imap)


 类似资料:
  • 问题内容: 我想从IMAP4服务器获取整个邮件。在python文档中,如果发现此代码有效: 我想知道我是否总是可以相信data [0] [1]返回消息的主体。当我运行“ RFC822.SIZE”时,我只有一个字符串而不是一个元组。 我已经浏览了rfc1730,但无法弄清楚“ RFC822”的正确响应结构。也很难从imaplib文档中得知获取结果的结构。 这是我在获取时得到的: 但是当我获取时,我得

  • 我正在尝试使用gmail从Delphi发送电子邮件。我有Indy10.5.9.0和Delphi XE3。 我从中获得了示例代码:http://www.andrecelestino.com/delphi-xe-envio-de-e-mail-com-componentes-indy/ 我还尝试了其他示例代码,但结果相同。 我有libeay32.dll和ssleay32.dll从这里:http://w

  • 我正在寻求登录gmail帐户并使用python脚本下载一些电子邮件的帮助。我正在尝试采用这里找到的方法,但我在步骤1中遇到了一个问题,即通过imap访问帐户。 下面是我要开始的代码: 我得到以下错误: 在gmail设置中确实启用了Imap。我已经查看了google支持链接上的说明,以及类似情况下有关此错误的问题,例如这里和这里,但我的情况与第一次不同,因为1)它从一开始就不起作用,2)我没有经常运

  • 问题内容: 我试图直接在单击按钮时打开Gmail的电子邮件发送表单,但这总是显示用于发送电子邮件的选项列表。 我这样做是为了打开GMail表单: 但这不是打开GMail表单。我应该怎么做才能打开GMail表单,请帮忙。 有什么办法吗? 问题答案: 在线路上使用一些东西

  • 问题内容: 我正在寻求一些帮助,以登录gmail帐户并使用python脚本下载一些电子邮件。我正在尝试采用此处找到的方法,但是我遇到了第1步的问题,即通过imap访问帐户。 这是我开始的代码: 我收到以下错误: 在gmail设置中确实启用了Imap。我已经查看了Google支持链接上的说明以及在类似情况下有关此错误的问题,但是我的情况与第一种情况有所不同,因为 1)从一开始它就没有用, 2)我是不

  • 问题内容: 我必须要做一个Windows应用程序,该应用程序会不时访问Gmail帐户并检查是否有新电子邮件。如果有的话,它必须阅读电子邮件的正文和主题(简单的文本电子邮件,没有图像或附件)。 请不要使用付费库,如果使用了其他库,请提供下载路径。 而且我只需要电子邮件正文和主题。因此,如果可以解析来自Gmail的冗长而复杂的邮件,并且仅包含主题和正文的两个字符串,那将是完美的选择。 最后,我只需要使