Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket
- BUFFER_SIZE = 1024
- POP_PORT = 110
- def connect_pop(server_ip, username, password):
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.connect((server_ip, POP_PORT))
- s.recv(BUFFER_SIZE)
- s.send("USER " + username + "\r\n")
- s.recv(BUFFER_SIZE)
- s.send("PASS " + password + "\r\n")
- s.recv(BUFFER_SIZE)
- return s
- def pop_list(_socket):
- _socket.send("LIST\r\n")
- _socket.recv(BUFFER_SIZE)
- data = _socket.recv(BUFFER_SIZE)
- lines = data.split("\r\n")
- mail_ids = []
- for line in lines:
- id_str = line.split(" ")[0]
- if id_str == ".":
- break
- mail_ids.append(int(id_str))
- return mail_ids
- def pop_retr(_socket, mail_id):
- _socket.send("RETR " + str(mail_id) + "\r\n")
- _socket.recv(BUFFER_SIZE)
- return Mail(_socket.recv(BUFFER_SIZE), mail_id)
- def pop_get_all_mails(_socket):
- mail_ids = pop_list(_socket)
- mail_list = []
- for id in mail_ids:
- mail_list.append(pop_retr(_socket,id))
- return mail_list
- class Mail:
- def __init__(self, data, mail_id):
- self.id = mail_id
- lines = data.split("\r\n")
- self.subject = ""
- self.sender = ""
- for line in lines:
- if line == "":
- break
- else:
- lparts = line.split(": ")
- if lparts[0] == "Subject":
- self.subject = lparts[1]
- elif lparts[0] == "From":
- self.sender = lparts[1]
- con_beg = data.find("\r\n\r\n")
- self.content = data[con_beg:]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement