本文实例讲述了Python实现发送与接收邮件的方法。分享给大家供大家参考,具体如下:
一、发送邮件
这里实现给网易邮箱发送邮件功能:
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
|
import smtplib import tkinter class Window: def __init__( self ,root): label1 = tkinter.Label(root,text = 'SMTP' ) label2 = tkinter.Label(root,text = 'Port' ) label3 = tkinter.Label(root,text = '用户名' ) label4 = tkinter.Label(root,text = '密码' ) label5 = tkinter.Label(root,text = '收件人' ) label6 = tkinter.Label(root,text = '主题' ) label7 = tkinter.Label(root,text = '发件人' ) label1.place(x = 5 ,y = 5 ) label2.place(x = 5 ,y = 30 ) label3.place(x = 5 ,y = 55 ) label4.place(x = 5 ,y = 80 ) label5.place(x = 5 ,y = 105 ) label6.place(x = 5 ,y = 130 ) label7.place(x = 5 ,y = 155 ) self .entryPop = tkinter.Entry(root) self .entryPort = tkinter.Entry(root) self .entryUser = tkinter.Entry(root) self .entryPass = tkinter.Entry(root,show = '*' ) self .entryTo = tkinter.Entry(root) self .entrySub = tkinter.Entry(root) self .entryFrom = tkinter.Entry(root) self .entryPort.insert(tkinter.END, '25' ) self .entryPop.place(x = 50 ,y = 5 ) self .entryPort.place(x = 50 ,y = 30 ) self .entryUser.place(x = 50 ,y = 55 ) self .entryPass.place(x = 50 ,y = 80 ) self .entryTo.place(x = 50 ,y = 105 ) self .entrySub.place(x = 50 ,y = 130 ) self .entryFrom.place(x = 50 ,y = 155 ) self .get = tkinter.Button(root,text = '发送邮件' ,command = self .Get) self .get.place(x = 60 ,y = 180 ) self .text = tkinter.Text(root) self .text.place(y = 220 ) def Get( self ): try : host = self .entryPop.get() port = int ( self .entryPort.get()) user = self .entryUser.get() pw = self .entryPass.get() fromaddr = self .entryFrom.get() toaddr = self .entryTo.get() subject = self .entrySub.get() text = self .text.get( 1.0 ,tkinter.END) msg = ( "From:%s\nTo:%s\nSubject:%s\n\n" % (fromaddr,toaddr,subject)) msg = msg + text smtp = smtplib.SMTP(host,port) smtp.set_debuglevel( 1 ) smtp.login(user,pw) smtp.sendmail(fromaddr,toaddr,msg) smtp.quit() except Exception as e: self .text.insert(tkinter.END, '发送错误\n' ) root = tkinter.Tk() window = Window(root) root.minsize( 600 , 400 ) root.mainloop() |
运行结果
二、接收邮件
这里实现从网易POP3服务器接收邮件:
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
|
import poplib import re import tkinter class Window: def __init__( self ,root): label1 = tkinter.Label(root,text = 'POP3' ) label2 = tkinter.Label(root,text = 'Port' ) label3 = tkinter.Label(root,text = '用户名' ) label4 = tkinter.Label(root,text = '密码' ) label1.place(x = 5 ,y = 5 ) label2.place(x = 5 ,y = 30 ) label3.place(x = 5 ,y = 55 ) label4.place(x = 5 ,y = 80 ) self .entryPop = tkinter.Entry(root) self .entryPort = tkinter.Entry(root) self .entryUser = tkinter.Entry(root) self .entryPass = tkinter.Entry(root,show = '*' ) self .entryPort.insert(tkinter.END, '110' ) self .entryPop.place(x = 50 ,y = 5 ) self .entryPort.place(x = 50 ,y = 30 ) self .entryUser.place(x = 50 ,y = 55 ) self .entryPass.place(x = 50 ,y = 80 ) self .get = tkinter.Button(root,text = '收取邮件' ,command = self .Get) self .get.place(x = 60 ,y = 120 ) self .text = tkinter.Text(root) self .text.place(y = 150 ) def Get( self ): try : host = self .entryPop.get() port = int ( self .entryPort.get()) user = self .entryUser.get() pw = self .entryPass.get() pop = poplib.POP3(host) pop.user(user) pop.pass_(pw) stat = pop.stat() self .text.insert(tkinter.END, 'Staus:%d message(s),%d bytes\n' % stat) rx_headers = re. compile (r "^(From|To|Subject)" ) for n in range (stat[ 0 ]): response,lines,bytes = pop.top(n + 1 , 10 ) self .text.insert(tkinter.END, "Message %d (%d bytes)\n" % (n + 1 ,bytes)) self .text.insert(tkinter.END, "-" * 30 + '\n' ) str_lines = [] for l in lines: str_lines.append(l.decode(encoding = 'utf-8' )) self .text.insert(tkinter.END, "\n" .join( filter (rx_headers.match,str_lines))) self .text.insert(tkinter.END, '\n' ) self .text.insert(tkinter.END, "-" * 30 + '\n' ) except Exception as e: self .text.insert(tkinter.END, '接收错误\n' ) root = tkinter.Tk() window = Window(root) root.mainloop() |
运行结果
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://blog.csdn.net/chengqiuming/article/details/78601182