在 Python 中有什么方法可以访问电子邮件帐户(我需要这个用于 gmail,但如果有的话更好)并且能够看到收件箱中的邮件数量(甚至可能只有未读邮件)? 谢谢。
试试
import imaplib
obj = imaplib.IMAP4_SSL('imap.gmail.com', 993)
obj.login('username', 'password')
obj.select('Inbox') <-- it will return total number of mail in Inbox i.e
('OK', ['50'])
obj.search(None,'UnSeen') <-- it will return the list of uids for Unseen mails
基于 Avadhesh 的回答:
#! /usr/bin/env python3.4
import getpass
import imaplib
mail = imaplib.IMAP4_SSL('imap.server.com')
mypassword = getpass.getpass("Password: ")
address = '[email protected]'
mail.login(address, mypassword)
mail.select("inbox")
print("Checking for new e-mails for ",address,".", sep='')
typ, messageIDs = mail.search(None, "UNSEEN")
messageIDsString = str( messageIDs[0], encoding='utf8' )
listOfSplitStrings = messageIDsString.split(" ")
if len(listOfSplitStrings) == 0:
print("You have no new e-mails.")
elif len(listOfSplitStrings) == 1:
print("You have",len(listOfSplitStrings),"new e-mail.")
else:
print("You have",len(listOfSplitStrings),"new e-mails.")
用于查找未读邮件的替代 gmail 特定解决方案:
Gmail 为消息提供原子订阅。例如:
https://mail.google.com/mail/feed/atom/(收件箱中的未读邮件) http://mail.google.com/mail/feed/atom/labelname/(labelname 中的未读消息) http://mail.google.com/mail/feed/atom/unread/(所有未读邮件)
所以你可以使用优秀的 feedparser 库来抓取提要并对条目进行计数。
不过,现在我正在查看它,似乎未读消息提要最多只返回 20 个条目,因此这可能有点受限。