import
imaplib, re
class
pygmail(
object
):
def
__init__(
self
):
self
.IMAP_SERVER
=
'imap.gmail.com'
self
.IMAP_PORT
=
993
self
.M
=
None
self
.response
=
None
self
.mailboxes
=
[]
def
login(
self
, username, password):
self
.M
=
imaplib.IMAP4_SSL(
self
.IMAP_SERVER,
self
.IMAP_PORT)
rc,
self
.response
=
self
.M.login(username, password)
return
rc
def
get_mailboxes(
self
):
rc,
self
.response
=
self
.M.
list
()
for
item
in
self
.response:
self
.mailboxes.append(item.split()[
-
1
])
return
rc
def
get_mail_count(
self
, folder
=
'Inbox'
):
rc,
self
.response
=
self
.M.select(folder)
return
self
.response[
0
]
def
get_unread_count(
self
, folder
=
'Inbox'
):
rc,
self
.response
=
self
.M.status(folder,
"(UNSEEN)"
)
unreadCount
=
re.search(
"UNSEEN (\d+)"
,
self
.response[
0
]).group(
1
)
return
unreadCount
def
get_imap_quota(
self
):
quotaStr
=
self
.M.getquotaroot(
"Inbox"
)[
1
][
1
][
0
]
r
=
re.
compile
(
'\d+'
).findall(quotaStr)
if
r
=
=
[]:
r.append(
0
)
r.append(
0
)
return
float
(r[
1
])
/
1024
,
float
(r[
0
])
/
1024
def
get_mails_from(
self
, uid, folder
=
'Inbox'
):
status, count
=
self
.M.select(folder, readonly
=
1
)
status, response
=
self
.M.search(
None
,
'FROM'
, uid)
email_ids
=
[e_id
for
e_id
in
response[
0
].split()]
return
email_ids
def
get_mail_from_id(
self
,
id
):
status, response
=
self
.M.fetch(
id
,
'(body[header.fields (subject)])'
)
return
response
def
rename_mailbox(
self
, oldmailbox, newmailbox):
rc,
self
.response
=
self
.M.rename(oldmailbox, newmailbox)
return
rc
def
create_mailbox(
self
, mailbox):
rc,
self
.response
=
self
.M.create(mailbox)
return
rc
def
delete_mailbox(
self
, mailbox):
rc,
self
.response
=
self
.M.delete(mailbox)
return
rc
def
logout(
self
):
self
.M.logout()
if
__name__
=
=
"__main__"
:
demo
=
pygmail()
demo.login(
"renwenchao888@gmail.com"
,
"qqq191430791"
)
mailBoxex
=
demo.get_mailboxes()
for
i
in
demo.response:
print
i
demo.logout()
|