Delete easymaillib directory
This commit is contained in:
parent
7730f31440
commit
608675e567
@ -1,93 +0,0 @@
|
|||||||
# Easy Mail Lib v0.1
|
|
||||||
# Forked from Liao Xuefeng's code
|
|
||||||
# Just for outting of box
|
|
||||||
# Edited by @david-ajax
|
|
||||||
|
|
||||||
import email, smtplib
|
|
||||||
from email.mime.text import MIMEText
|
|
||||||
from email.parser import Parser
|
|
||||||
import poplib
|
|
||||||
from email.header import decode_header
|
|
||||||
from email.utils import parseaddr
|
|
||||||
|
|
||||||
class Get:
|
|
||||||
def connect(mail, user, password, pop3_host):
|
|
||||||
"""Connect to mail server"""
|
|
||||||
try:
|
|
||||||
obj = poplib.POP3_SSL(pop3_host)
|
|
||||||
obj.user(user)
|
|
||||||
obj.pass_(password)
|
|
||||||
return obj
|
|
||||||
except Exception as e:
|
|
||||||
return False
|
|
||||||
def num(obj):
|
|
||||||
"""Get the number of messages on hand"""
|
|
||||||
try:
|
|
||||||
resp, mails, octets = obj.list()
|
|
||||||
return len(mails)
|
|
||||||
except Exception as e:
|
|
||||||
return False
|
|
||||||
def get(obj, num):
|
|
||||||
"""Get mail's content"""
|
|
||||||
try:
|
|
||||||
resp, mails, octets = obj.list()
|
|
||||||
index = len(mails)
|
|
||||||
resp, lines, octets = obj.retr(index - 1) #
|
|
||||||
message_content = b'\r\n'.join(lines).decode('utf-8')
|
|
||||||
message = Parser().parsestr(message_content)
|
|
||||||
info = Get.print_info(message)
|
|
||||||
return info
|
|
||||||
except Exception as e:
|
|
||||||
return False
|
|
||||||
def quit(obj):
|
|
||||||
"""Break connection"""
|
|
||||||
try:
|
|
||||||
obj.quit()
|
|
||||||
return True
|
|
||||||
except Exception as e:
|
|
||||||
return False
|
|
||||||
def print_info(msg, indent=0):
|
|
||||||
"""Convert mail object to content"""
|
|
||||||
total = {}
|
|
||||||
if indent == 0:
|
|
||||||
for header in ['From', 'To', 'Subject']:
|
|
||||||
value = msg.get(header, '')
|
|
||||||
if value:
|
|
||||||
if header == 'Subject':
|
|
||||||
value = Get.decode_str(value)
|
|
||||||
total["subject"] = value
|
|
||||||
else:
|
|
||||||
hdr, addr = parseaddr(value)
|
|
||||||
name = Get.decode_str(hdr)
|
|
||||||
value = u'%s <%s>' % (name, addr)
|
|
||||||
total["name"] = name
|
|
||||||
total["addr"] = addr
|
|
||||||
# print(value)
|
|
||||||
if msg.is_multipart():
|
|
||||||
parts = msg.get_payload()
|
|
||||||
for n, part in enumerate(parts):
|
|
||||||
total["message"] = part
|
|
||||||
# print_info(part, indent + 1)
|
|
||||||
else:
|
|
||||||
content_type = msg.get_content_type()
|
|
||||||
if content_type == 'text/plain' or content_type == 'text/html':
|
|
||||||
content = msg.get_payload(decode=True)
|
|
||||||
charset = guess_charset(msg)
|
|
||||||
if charset:
|
|
||||||
content = content.decode(charset)
|
|
||||||
return total
|
|
||||||
def decode_str(s):
|
|
||||||
"""Decode mail objects"""
|
|
||||||
value, charset = decode_header(s)[0]
|
|
||||||
if charset:
|
|
||||||
value = value.decode(charset)
|
|
||||||
return value
|
|
||||||
def guess_charset(msg):
|
|
||||||
"""Guess charset"""
|
|
||||||
charset = msg.get_charset()
|
|
||||||
if charset is None:
|
|
||||||
content_type = msg.get('Content-Type', '').lower()
|
|
||||||
pos = content_type.find('charset=')
|
|
||||||
if pos >= 0:
|
|
||||||
charset = content_type[pos + 8:].strip()
|
|
||||||
return charset
|
|
Loading…
x
Reference in New Issue
Block a user