python - 如何使用 Python 通过 IMAP 获取未读消息并设置消息读取标志?

标签 python email imap

import imaplib
def read():

    userName = "xxx@gmail.com"
    password = "xxxx" 
    name = 'xxx@gmail.com'
    email_ids = [userName]
    data = []
    imap_server = imaplib.IMAP4_SSL("imap.gmail.com",993)
    imap_server.login(userName, password)
    imap_server.select('INBOX')
    da = []
    status, response = imap_server.status('INBOX', "(UNSEEN)")
    unreadcount = int(response[0].split()[2].strip(').,]'))
    print unreadcount

    status, response = imap_server.search(None, '(FROM "xxx@gmail.com")')
    email_ids = [e_id for e_id in response[0].split()]
    for e_id in email_ids:
        _, response = imap_server.fetch(e_id, '(UID BODY[TEXT])')
        da.append(response[0][1])
    print da


read()

如何组织上面的代码,只读未读邮件? 另外,一旦我们阅读了它们,如何使用 Python 将消息标记为已读邮件?

最佳答案

import imaplib

def read(username, password, sender_of_interest):
    # Login to INBOX
    imap = imaplib.IMAP4_SSL("imap.gmail.com", 993)
    imap.login(username, password)
    imap.select('INBOX')

    # Use search(), not status()
    status, response = imap.search(None, 'INBOX', '(UNSEEN)')
    unread_msg_nums = response[0].split()

    # Print the count of all unread messages
    print len(unread_msg_nums)

    # Print all unread messages from a certain sender of interest
    status, response = imap.search(None, '(UNSEEN)', '(FROM "%s")' % (sender_of_interest))
    unread_msg_nums = response[0].split()
    da = []
    for e_id in unread_msg_nums:
        _, response = imap.fetch(e_id, '(UID BODY[TEXT])')
        da.append(response[0][1])
    print da

    # Mark them as seen
    for e_id in unread_msg_nums:
        imap.store(e_id, '+FLAGS', '\Seen')

关于python - 如何使用 Python 通过 IMAP 获取未读消息并设置消息读取标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22856198/

相关文章:

python - Sublime Text 3 subl 命令在 Windows 10 中不起作用

Python:检查变量是否是字典

ruby-on-rails - Rails 使用 GMail 发送邮件

python - 如何使用 Python 格式化 pubDate

email - 在 Firefox Phone 邮件应用程序中接受邮件证书

python - 在没有别名发件人的情况下发送重复的电子邮件

php - 在 PHP 的变量中包含 Foreach 循环的结果? (对于函数 mail() )

iphone - 通过 IMAP 编辑 iOS 笔记

c# - 无法让 TcpClient 连接到 gmail

python - 将多个列表收集在一起