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编写一个模仿CPU工作的程序
Apr 16 Python
用Python操作字符串之rindex()方法的使用
May 19 Python
Queue 实现生产者消费者模型(实例讲解)
Nov 13 Python
Python+树莓派+YOLO打造一款人工智能照相机
Jan 02 Python
pyqt5实现登录界面的模板
May 30 Python
python的sorted用法详解
Jun 25 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 Python
python程序 创建多线程过程详解
Sep 23 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
Dec 11 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
如何验证python安装成功
Jul 06 Python
python3字符串输出常见面试题总结
Dec 01 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
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
PHP使用socket发送HTTP请求的方法
2016/02/14 PHP
PHP构造二叉树算法示例
2017/06/21 PHP
php微信公众号开发之快递查询
2018/10/20 PHP
一端时间轮换的广告
2006/06/26 Javascript
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
JavaScript回调(callback)函数概念自我理解及示例
2013/07/04 Javascript
限制textbox或textarea输入字符长度的JS代码
2013/10/16 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
Bootstrap树形控件使用方法详解
2016/01/27 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
深入理解vue.js双向绑定的实现原理
2016/12/05 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
python批量下载抖音视频
2019/06/17 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
python多线程分块读取文件
2019/08/29 Python
python之yield和Generator深入解析
2019/09/18 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
C#面试题问题集
2016/04/02 面试题
职业生涯规划怎么写
2013/12/29 职场文书
吸烟检讨书2000字
2014/02/13 职场文书
意向书范文
2014/03/31 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书
优秀团员自我评价
2015/03/10 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android