我已经使用正则表达式设法从位于“收件箱”中的电子邮件中提取了所有发件人地址,但是我多次尝试也都失败了,也没有为这些电子邮件提取相关的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并可以提供帮助,我将永远感激不已。谢谢。