首页 > 编程 > Python > 正文

Python实现发送与接收邮件的方法详解

2020-01-04 15:27:06
字体:
来源:转载
供稿:网友

本文实例讲述了Python实现发送与接收邮件的方法。分享给大家供大家参考,具体如下:

一、发送邮件

这里实现给网易邮箱发送邮件功能:

import smtplibimport tkinterclass 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()

运行结果

Python,发送邮件,接收邮件

二、接收邮件

这里实现从网易POP3服务器接收邮件:

import poplibimport reimport tkinterclass 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,发送邮件,接收邮件

 

希望本文所述对大家Python程序设计有所帮助。


注:相关教程知识阅读请移步到python教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表