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


Posted in Python onMarch 28, 2018

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

一、发送邮件

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

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()

运行结果

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

二、接收邮件

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

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实现发送与接收邮件的方法详解

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

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

Python 相关文章推荐
python3.3教程之模拟百度登陆代码分享
Jan 16 Python
Python解析json文件相关知识学习
Mar 01 Python
python中PIL安装简单教程
Apr 21 Python
Python ldap实现登录实例代码
Sep 30 Python
pygame实现弹力球及其变速效果
Jul 03 Python
python中利用await关键字如何等待Future对象完成详解
Sep 07 Python
Python实现读取txt文件并画三维图简单代码示例
Dec 09 Python
python去掉 unicode 字符串前面的u方法
Oct 21 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
Feb 16 Python
python pygame实现五子棋小游戏
Oct 26 Python
python 实现二维字典的键值合并等函数
Dec 06 Python
python中的时区问题
Jan 14 Python
Python实现线程状态监测简单示例
Mar 28 #Python
python实现朴素贝叶斯分类器
Mar 28 #Python
详解Python中where()函数的用法
Mar 27 #Python
Django基于ORM操作数据库的方法详解
Mar 27 #Python
利用Python批量提取Win10锁屏壁纸实战教程
Mar 27 #Python
Django学习笔记之ORM基础教程
Mar 27 #Python
Python使用xlwt模块操作Excel的方法详解
Mar 27 #Python
You might like
PHP音乐采集(部分代码)
2007/02/14 PHP
PHP循环语句笔记(foreach,list)
2011/11/29 PHP
PHP判断是否为空的几个函数对比
2015/04/21 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
JS的千分位算法实现思路
2013/07/31 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
详解用webpack2搭建angular2的项目
2017/06/22 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
详解JavaScript的变量
2019/04/04 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
javascript自定义右键菜单插件
2019/12/16 Javascript
vue插槽slot的简单理解与用法实例分析
2020/03/14 Javascript
Python中的字符串替换操作示例
2016/06/27 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
tensorflow实现softma识别MNIST
2018/03/12 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
django 实现简单的插入视频
2020/04/07 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
会计岗位职责
2013/11/08 职场文书
高三毕业典礼主持词
2014/03/27 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书
2015感人爱情寄语
2015/02/26 职场文书
护理工作个人总结
2015/03/03 职场文书
初婚初育证明范本
2015/06/18 职场文书
幼儿园小班班务总结
2015/08/03 职场文书
Python实现8种常用抽样方法
2021/06/27 Python
Golang 语言控制并发 Goroutine的方法
2021/06/30 Golang