Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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
使用C#,C++;还是蟒蛇_C#_Python_Email_Gmail - Fatal编程技术网

使用C#,C++;还是蟒蛇

使用C#,C++;还是蟒蛇,c#,python,email,gmail,C#,Python,Email,Gmail,我必须做一个Windows应用程序,不时访问Gmail帐户并检查是否有新的电子邮件。如果有,它必须阅读电子邮件正文和主题(简单的文本电子邮件,没有图像或附件) 请不要使用付费LIB,如果使用其他LIB,请给出下载路径 我只需要电子邮件的主体和主题。因此,如果能够解析来自Gmail的长而复杂的消息,并且只需要两个包含主题和正文的字符串,那就太完美了 最后,我只需要获得自上次执行以来收到的新消息。因此,已读消息可以标记为“已读”,而只考虑新消息(标记为“新”) 代码可以用Python或C++编写,但

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

请不要使用付费LIB,如果使用其他LIB,请给出下载路径

我只需要电子邮件的主体和主题。因此,如果能够解析来自Gmail的长而复杂的消息,并且只需要两个包含主题和正文的字符串,那就太完美了

最后,我只需要获得自上次执行以来收到的新消息。因此,已读消息可以标记为“已读”,而只考虑新消息(标记为“新”)

代码可以用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()

上面的大部分代码来自。

请注意,Gmail IMAP和IMAPA之间存在一些差异。例如,由于Gmail将文件夹视为标签,下面的代码不会删除带有其他文件夹标签的邮件:

imap_instance.uid('store', uid, '+FLAGS', '\\Deleted')
imap_instance.expunge()

我知道这是一篇老文章,但我想在开源IMAPX2库讨论中添加以下链接:开发人员似乎一直在更新项目。对于所有参与的人来说,这是一项伟大的工作

谷歌已经开放了它的Gmail API来访问你的Gmail帐户。您可以通过以下链接查看具有基本功能的快速入门示例:


是的,gmail支持IMAP,但IIRC需要打开它。采取任何其他方法都没有意义+正如我所说,我想使用一个免费的图书馆。如果你能推荐一个。如果可能,使用库发送一个简单的示例代码。别忘了把Gmail中冗长而复杂的信息转换成两个简单的字符串。谢谢…真的很管用。我能够得到看不见的信息的主题,然后标记为“看见”。但是,get_payload()函数不能正常工作。我无法获取消息正文。我得到的不是正文,而是类似:[,]@jpnavarini的消息:我添加了处理多部分消息的代码。这能解决问题吗?我希望这对我有用!我的旧Mac电脑坏了。除了用户名和密码之外,你还需要更改什么吗?@Dylan:这对我也不管用了
imaplib.IMAP4_SSL(“imap.gmail.com”,993)
正在超时。不确定修复是什么…@unutbu aaa,现在我的正在工作。我在终端中键入了这个
telnet imap.gmail.com 993
。它说,
连接已被外部主机关闭
,但它至少允许我连接到端口993。:)干杯
from imap_tools import MailBox, Q
# This prints the subject and body of unseen messages, and marks those messages as seen.
with MailBox('imap.mail.com').login('test@mail.com', 'password') as mailbox:
    # *mark_seen param = True by default
    print([(m.subject, m.html or m.text) for m in mailbox.fetch(Q(seen=False), mark_seen=True)])