-
Notifications
You must be signed in to change notification settings - Fork 0
/
07mail.py
123 lines (95 loc) · 3.2 KB
/
07mail.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
"""
Author: TangYue
"""
'''
建立一个FTP服务器(本机目录)
下载FTP目录中一个随机文件
然后邮件发送给自己的邮箱(文件以附件的形式发送)
接收邮件,将刚才发送的邮件接收(包括附件)下来,邮件内容保存到本地(包括附件)
'''
import smtplib
import poplib
import base64
import sys
from email.mime.text import MIMEText
from email.header import Header
from email.parser import Parser
from email.header import decode_header
from email.utils import parseaddr
def send_email(msg):
args = sys.argv[1:]
sender = "yuetang2@iflytek.com"
receivers = ["yuetang2@iflytek.com"]
user = args[0]
password64 = args[1].encode("utf-8")
password = args[1]
smtpObj = smtplib.SMTP("mail.iflytek.com")
smtpObj.login(user, password)
errs = smtpObj.sendmail(sender, receivers, msg.as_string())
print(errs)
def recevice_email():
args = sys.argv[1:]
user = args[0]
password64 = args[1].encode("utf-8")
# base64.decodebytes(password64).decode("utf-8")
password = args[1]
server = "mail.iflytek.com"
pop3Obj = poplib.POP3(server)
print(pop3Obj.welcome.decode("utf-8"))
pop3Obj.user(user)
pop3Obj.pass_(password)
pop3Obj.set_debuglevel(1) # 打开调试信息
email_num, email_size = pop3Obj.stat()
print(email_num, email_size)
rsp, msg_list, rsp_siz = pop3Obj.list()
print(msg_list)
rsp, msglines, msgsiz = pop3Obj.retr(len(msg_list))
content = b'\r\n'.join(msglines).decode('utf-8')
msg = Parser().parsestr(text=content)
__get_address(msg)
__get_subject(msg)
__get_content(msg)
def __get_subject(msg):
subject = msg['Subject']
value, charset = decode_header(subject)[0]
print(value.decode(charset))
def __get_address(msg):
fromAddr = msg["From"]
head, addr = parseaddr(fromAddr)
value, charset = decode_header(head)[0]
print(value, addr)
toAddr = msg["to"]
for li in toAddr.split(","):
print(li.strip())
def __get_content(msg):
content = msg.get_payload()
if type(content) == list:
for sContent in content:
__get_content(sContent)
else:
contentType = msg["Content-Type"]
charset = msg["charset"] if msg["charset"] else "gbk"
transfer = msg['Content-Transfer-Encoding']
if "text/plain" in contentType:
if transfer == "base64":
contentStr = base64.decodebytes(content.encode(charset))
contentStr = contentStr.decode(charset)
print(contentStr)
elif "text/html" in contentType:
print(content)
else:
fileName64 = msg.get_filename().split("?")[3]
fileName = base64.decodebytes(fileName64.encode(charset))
fileName = fileName.decode(charset)
print(fileName)
def create_email():
send_file = open(r"./download/test.txt", 'rb').read()
msg = MIMEText(send_file, 'base64', _charset="utf-8")
msg["From"] = Header("yuetang2")
msg["to"] = Header("yuetang2")
msg["Subject"] = Header("yuetang2 09flaskr.py.txt", 'utf-8')
return msg
if __name__ == "__main__":
msg = create_email()
send_email(msg)
recevice_email()