是否可以使用Python 3 IMAPlib检索给定消息的发件人地址和相关的UID

时间:2018-06-26 22:26:52

标签: imap python-3.6 imaplib uid

我已经使用正则表达式设法从位于“收件箱”中的电子邮件中提取了所有发件人地址,但是我多次尝试也都失败了,也没有为这些电子邮件提取相关的UID。

这是我到目前为止所拥有的:

    result, data = mail.search(None, 'ALL')
ids = data[0]
id_list = ids.split()
for i in id_list:
  typ, data = mail.fetch(i,'(RFC822)')
  for response_part in data:
    if isinstance(response_part, tuple):
      msg = email.message_from_bytes(response_part[1])
      sender = msg['from'].split()[-1]
      address = re.sub(r'[<>]','',sender)
# Ignore any occurences of own email address and add to list
  if not re.search(r'' + re.escape(LOGIN),address) and not address in email_list:
    email_list.append(address)
    print address

输出速度很慢(我想是因为正则表达式),但它仍然可以完成工作。

输出:

    no-reply@mail.instagram.com
    no-reply@accounts.google.com
    rhodesi926@icloud.com
    wat@elevenyellow.com
    pinbot@notifications.pinterest.com
    support@autopin.co
    pinbot@account.pinterest.com
    info@shootbox.me
    pinbot@explore.pinterest.com
    bugra@boostfy.co
    mail-noreply@google.com
    pinbot@inspire.pinterest.com
    mua@mikasabeauty.com
    noreply@apple.com
    privacy-noreply@policies.google.com

部分问题是我不知道UID如何连接到发送方以及UID在IMAP结构中存储的位置。

我假设我可以纠正一个可以从“ UID:”字段中提取任意4位数字组合的正则表达式,然后担心它会拖慢我的脚本的爬行速度。...

如果有人了解Imaplib并可以提供帮助,我将永远感激不已。谢谢。

0 个答案:

没有答案