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中删除文件的程序代码
Mar 13 Python
Python get获取页面cookie代码实例
Sep 12 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
Sep 17 Python
python的faker库用法
Nov 28 Python
解决安装pyqt5之后无法打开spyder的问题
Dec 13 Python
Python callable内置函数原理解析
Mar 05 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
在Django中自定义filter并在template中的使用详解
May 19 Python
Matplotlib.pyplot 三维绘图的实现示例
Jul 28 Python
实现Python3数组旋转的3种算法实例
Sep 16 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
Mar 02 Python
详解python网络进程
Jun 15 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
提问的智慧
2006/10/09 PHP
PHP 中的类
2006/10/09 PHP
PHP 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
php获取远程文件大小
2015/10/20 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
jQuery EasyUI API 中文文档 - NumberBox数字框
2011/10/13 Javascript
js获取url中的参数且参数为中文时通过js解码
2014/03/19 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
通过Pandas读取大文件的实例
2018/06/07 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
在python中获取div的文本内容并和想定结果进行对比详解
2019/01/02 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
大学生社会实践评语
2014/04/25 职场文书
家长建议怎么写
2014/05/15 职场文书
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS
SQL Server2019数据库备份与还原脚本,数据库可批量备份
2021/11/20 SQL Server
Nginx 常用配置
2022/05/15 Servers
Web应用开发TypeScript使用详解
2022/05/25 Javascript