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 相关文章推荐
python 多进程通信模块的简单实现
Feb 20 Python
python中将字典转换成其json字符串
Jul 16 Python
Python 专题一 函数的基础知识
Mar 16 Python
神经网络python源码分享
Dec 15 Python
python读取中文txt文本的方法
Apr 12 Python
Python生成器定义与简单用法实例分析
Apr 30 Python
一百多行python代码实现抢票助手
Sep 25 Python
python实现一组典型数据格式转换
Dec 15 Python
python 反编译exe文件为py文件的实例代码
Jun 27 Python
python获取Linux发行版名称
Aug 30 Python
Python While循环语句实例演示及原理解析
Jan 03 Python
python中upper是做什么用的
Jul 20 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判断浏览器、判断语言代码分享
2015/03/05 PHP
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
JQuery的$和其它JS发生冲突的快速解决方法
2014/01/24 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
JS判断移动端访问设备并加载对应CSS样式
2014/06/13 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
NodeJs中的VM模块详解
2015/05/06 NodeJs
javascript相关事件的几个概念
2015/05/21 Javascript
javascript封装简单实现方法
2015/08/11 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
bootstrap读书笔记之CSS组件(上)
2016/10/17 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
2016/11/07 Javascript
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
深入理解Node module模块
2018/03/26 Javascript
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
python备份文件的脚本
2008/08/11 Python
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
Python实现命令行通讯录实例教程
2016/08/18 Python
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
Python模块future用法原理详解
2020/01/20 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
介绍下java.util.Arrays类
2012/10/16 面试题
电信专业毕业生推荐信
2013/11/18 职场文书
店长职务说明书
2014/02/04 职场文书
优秀党员获奖感言
2014/02/18 职场文书
电子商务专业求职信
2014/07/10 职场文书
通报表扬范文
2015/01/17 职场文书
2016年情人节广告语
2016/01/28 职场文书