我必须做一个 Windows 应用程序,不时访问 Gmail 帐户并检查是否有新电子邮件。如果有,它必须阅读电子邮件正文和主题(简单的文本电子邮件,没有图像或附件)。
请不要使用付费库,如果使用任何其他库,请提供下载路径。
我只需要电子邮件正文和主题。因此,如果可以解析来自 Gmail 的长而复杂的邮件,并且只包含两个包含主题和正文的字符串,那就完美了。
最后,我只需要获取自上次执行以来到达的新消息。因此,可以将已读消息标记为“已读”,并且只考虑新消息(标记为"new")。
代码可以用 Python 或 C++ 编写,但我更喜欢用 C#。
相关问题:
最佳答案
这会打印未查看消息的主题和正文,并将这些消息标记为已查看。
import imaplib
import email
def extract_body(payload):
if isinstance(payload,str):
return payload
else:
return '\n'.join([extract_body(part.get_payload()) for part in payload])
conn = imaplib.IMAP4_SSL("imap.gmail.com", 993)
conn.login("user", "password")
conn.select()
typ, data = conn.search(None, 'UNSEEN')
try:
for num in data[0].split():
typ, msg_data = conn.fetch(num, '(RFC822)')
for response_part in msg_data:
if isinstance(response_part, tuple):
msg = email.message_from_string(response_part[1])
subject=msg['subject']
print(subject)
payload=msg.get_payload()
body=extract_body(payload)
print(body)
typ, response = conn.store(num, '+FLAGS', r'(\Seen)')
finally:
try:
conn.close()
except:
pass
conn.logout()
上面的大部分代码来自Doug Hellmann's tutorial on imaplib .
关于c# - 使用 C#、C++ 或 Python 从 Gmail 读取和解析电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2792623/