使用C#,C ++或Python从Gmail中读取和解析电子邮件

发布于 2021-01-29 15:10:24

我必须要做一个Windows应用程序,该应用程序会不时访问Gmail帐户并检查是否有新电子邮件。如果有的话,它必须阅读电子邮件的正文和主题(简单的文本电子邮件,没有图像或附件)。

请不要使用付费库,如果使用了其他库,请提供下载路径。

而且我只需要电子邮件正文和主题。因此,如果可以解析来自Gmail的冗长而复杂的邮件,并且仅包含主题和正文的两个字符串,那将是完美的选择。

最后,我只需要使新消息自上次执行以来就可以到达。因此,已读消息可以标记为“已读”,并且仅考虑新消息(标记为“新”)。

该代码可以用Python或C ++编写,但是我更喜欢用C#。

相关问题:

关注者
0
被浏览
73
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这将打印未显示消息的主题和正文,并将这些消息标记为可见。

    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()
    

    上面的许多代码来自imaplib上的Doug
    Hellmann的教程



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看