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获取指定网页上所有超链接的方法
Apr 04 Python
详解Python中映射类型的内建函数和工厂函数
Aug 19 Python
Python正则表达式完全指南
May 25 Python
PyTorch学习笔记之回归实战
May 28 Python
python使用Matplotlib画条形图
Mar 25 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
May 23 Python
Python列表与元组的异同详解
Jul 02 Python
基于python进行抽样分布描述及实践详解
Sep 02 Python
Python3基本输入与输出操作实例分析
Feb 14 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
python 线程的五个状态
Sep 22 Python
Python实现邮件发送的详细设置方法(遇到问题)
Jan 18 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对gzip文件或者字符串解压实例参考
2008/07/25 PHP
解析左右值无限分类的实现算法
2013/06/20 PHP
PHP中让curl支持sock5的代码实例
2015/01/21 PHP
php通过array_merge()函数合并关联和非关联数组的方法
2015/03/18 PHP
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
PHP单例模式详细介绍
2015/07/01 PHP
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
用javascript获得地址栏参数的两种方法
2006/11/08 Javascript
比较详细的javascript对象的property和prototype是什么一种关系
2007/08/06 Javascript
jQuery 自动增长的文本输入框实现代码
2010/04/02 Javascript
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
javascript实现表单验证
2016/01/29 Javascript
实用又漂亮的BootstrapValidator表单验证插件
2016/05/30 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
loading动画特效小结
2017/01/22 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
使用TS来编写express服务器的方法步骤
2020/10/29 Javascript
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
python使用百度翻译进行中翻英示例
2014/04/14 Python
Python中的面向对象编程详解(下)
2015/04/13 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
Python判断是否json是否包含一个key的方法
2018/12/31 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
Python插件机制实现详解
2020/05/04 Python
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
生产管理的三大手法
2013/11/11 职场文书
高中生的自我鉴定范文
2014/01/24 职场文书
幼儿学前班评语
2014/12/29 职场文书
民事调解书范文
2015/05/20 职场文书
经销商会议开幕词
2016/03/04 职场文书
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL