Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中仅使用imap解析电子邮件_Python_Regex_Imap - Fatal编程技术网

在python中仅使用imap解析电子邮件

在python中仅使用imap解析电子邮件,python,regex,imap,Python,Regex,Imap,我只需要标题中的FROM:部分。也不是全名。我现在得到的数据返回为“名字姓氏”email@email.com我想要数据的方式是email@email.com您需要的是信封数据项,而不是body.peek[header.fields(…)]。当您请求信封时,服务器会进行大量解析,并提供From、Subject和其他一些内容。在示例中,您会得到一个元组列表,每个元组可能如下所示:(“googleplay”NIL“googleplay noreply”“Google.com”)。第一个是你不关心的名字

我只需要标题中的FROM:部分。也不是全名。我现在得到的数据返回为“名字姓氏”email@email.com我想要数据的方式是email@email.com

您需要的是
信封
数据项,而不是
body.peek[header.fields(…)]
。当您请求
信封时,服务器会进行大量解析,并提供From、Subject和其他一些内容。在示例中,您会得到一个元组列表,每个元组可能如下所示:(“googleplay”NIL“googleplay noreply”“Google.com”)。第一个是你不关心的名字,第二个只是历史性的,第三个和第四个是你想要的。

你希望列表包含什么?电子邮件的正文或邮件的标题?列表应仅包含电子邮件地址。没有名字/姓氏哪个电子邮件地址?发件人、收件人、抄送人、密件抄送人等。您必须明确。如果有多个地址怎么办?你想要哪个地址?所有的,第一个,一个特定的?我只想要第一个来自代码所指示的from部分。
conn = imaplib.IMAP4_SSL("imap.gmail.com", 993)
conn.login("login", "pass")
conn.select()
typ, data = conn.search(None, 'ALL')
z = open("email.txt", "a")

for num in data[0].split():
    typ, msg_data = conn.fetch(num, '(BODY[HEADER.FIELDS (SUBJECT FROM)])')
    for response_part in msg_data:
        if isinstance(response_part, tuple):
            msg = email.message_from_string(response_part[1])
            subject = msg['from']
            z.write("%s\n" % subject) 
            print(subject)

    typ, response = conn.store(num, '+FLAGS', r'(\Seen)')
finally:
try:
    conn.close()
except:
    pass
conn.logout()