全栈工程师开发手册 (作者:栾鹏)
python教程全解


python使用smtp上传邮件,使用pop3下载邮件。由于上传后立刻下载了,所以有时不会再在网页邮箱中有通知。

可设置邮件的收发人,主题,内容。并以163邮件为例,使用smtp发送了一个普通文本邮件,使用pop3协议读取了邮件列表,并下载了第一个邮件,并进行了解析,分别在python2.7和python3.6下进行试验。

python2.7下代码

#coding:utf-8from smtplib import SMTP
from poplib import POP3
from time import sleepprint("=====================SMTP发邮件和POP3收邮件=====================");SMTPSVR = 'smtp.163.com'  #smtp服务器地址
POP3SVR = 'pop.163.com'  #pop3服务器地址
SENDER="aaaaaaa@163.com"                           #用户名,换成自己的
PASSWORD="aaaaaaa"                             #密码,换成自己的
RECIPS=["aaaaaaa@163.com"]      #这里接收人也设置为自己
origmsg = '''\
From: %(who)s
To: %(who)s
Subject: first testHello World!
''' % {'who': SENDER}#使用SMTP完成邮件的发送
sendSvr = SMTP(SMTPSVR)   #创建一个smtp发送对象
sendSvr.login(SENDER, PASSWORD)  # 登录操作
errs = sendSvr.sendmail(SENDER,RECIPS,origmsg) #参数:发件人,收件人,邮件整体(消息头和消息体的字符串表示)
sendSvr.quit()
assert len(errs) == 0, errs  #,assert返回为假就会触发异常
print("smtp发送邮件完成")
sleep(10)    # 睡眠10秒钟,等待邮件被投递,让服务器完成消息的发送和接收。sleep单位秒#使用pop3完成邮件的获取
recvSvr = POP3(POP3SVR)  #创建一个pop3接收对象
recvSvr.user(SENDER)  #设置用户名
recvSvr.pass_(PASSWORD)  #设置密码
emailist = recvSvr.stat()  #获取邮件列表
rsp, msg, siz = recvSvr.retr(emailist[0]) #下载第一个邮件
sep = msg.index('')  #邮件头和邮件正文使用空白行进行分割,这里定位空白行的位置.是不是应该是定位\n
recvBody = msg[sep+1:]  #根据空白行获取邮件正文
print(recvBody)
print("pop3接收邮件完成")

python3.6下由于默认字符串为unicode,而邮件发送参数只接收str的字符串,所以再发送前先将字符串从unicode转化为str

python3.6下代码如下

#coding:utf-8from smtplib import SMTP
from poplib import POP3
from time import sleepprint("=====================SMTP发邮件和POP3收邮件=====================");SMTPSVR = 'smtp.163.com'  #smtp服务器地址
POP3SVR = 'pop.163.com'  #pop3服务器地址
SENDER="aaaaaaa@163.com"                           #用户名,换成自己的
PASSWORD="aaaaaaa"                             #密码,换成自己的
RECIPS=["aaaaaaa@163.com"]      #这里接收人也设置为自己
origmsg = '''\
From: %(who)s
To: %(who)s
Subject: first testHello World!
''' % {'who': SENDER}#使用SMTP完成邮件的发送
sendSvr = SMTP(SMTPSVR)   #创建一个smtp发送对象
sendSvr.login(SENDER, PASSWORD)  # 登录操作
errs = sendSvr.sendmail(SENDER,RECIPS,origmsg) #参数:发件人,收件人,邮件整体(消息头和消息体的字符串表示)
sendSvr.quit()
assert len(errs) == 0, errs  #,assert返回为假就会触发异常
print("smtp发送邮件完成")
sleep(10)    # 睡眠10秒钟,等待邮件被投递,让服务器完成消息的发送和接收。sleep单位秒#使用pop3完成邮件的获取
recvSvr = POP3(POP3SVR)  #创建一个pop3接收对象
recvSvr.user(SENDER)  #设置用户名
recvSvr.pass_(PASSWORD)  #设置密码
emailist = recvSvr.stat()  #获取邮件列表
rsp, msg, siz = recvSvr.retr(emailist[0]) #下载第一个邮件
print(msg)
#sep = msg.index('')  #查找列表中""空白元素,空白元素后面为邮件正文
#recvBody = msg[sep+1:]  #根据空白元素定位获取邮件正文
print("pop3接收邮件完成")

本文只试验了163邮件,读者可以按下面的主机地址,试验其他邮箱。但并不是每种邮箱都能成功。

gmail(google.com)
POP3服务器地址:pop.gmail.com(SSL启用 端口:995)
SMTP服务器地址:smtp.gmail.com(SSL启用 端口:587)

21cn.com:
POP3服务器地址:pop.21cn.com(端口:110)
SMTP服务器地址:smtp.21cn.com(端口:25)

sina.com:
POP3服务器地址:pop3.sina.com.cn(端口:110)
SMTP服务器地址:smtp.sina.com.cn(端口:25)

tom.com:
POP3服务器地址:pop.tom.com(端口:110)
SMTP服务器地址:smtp.tom.com(端口:25)

163.com:
POP3服务器地址:pop.163.com(端口:110)
SMTP服务器地址:smtp.163.com(端口:25)

263.net:
POP3服务器地址:pop3.263.net(端口:110)
SMTP服务器地址:smtp.263.net(端口:25)

yahoo.com:
POP3服务器地址:pop.mail.yahoo.com
SMTP服务器地址:smtp.mail.yahoo.com

263.net.cn:
POP3服务器地址:pop.263.net.cn(端口:110)
SMTP服务器地址:smtp.263.net.cn(端口:25)

Foxmail:
POP3服务器地址:POP.foxmail.com(端口:110)
SMTP服务器地址:SMTP.foxmail.com(端口:25)

sinaVIP
POP3服务器:pop3.vip.sina.com (端口:110)
SMTP服务器:smtp.vip.sina.com (端口:25)

sohu.com:
POP3服务器地址:pop3.sohu.com(端口:110)
SMTP服务器地址:smtp.sohu.com(端口:25)

etang.com:
POP3服务器地址:pop.etang.com
SMTP服务器地址:smtp.etang.com

x263.net:
POP3服务器地址:pop.x263.net(端口:110)
SMTP服务器地址:smtp.x263.net(端口:25)

yahoo.com.cn:
POP3服务器地址:pop.mail.yahoo.com.cn(端口:995)
SMTP服务器地址:smtp.mail.yahoo.com.cn(端口:587)
雅虎邮箱POP3的SSL不启用端口为110,POP3的SSL启用端口995;SMTP的SSL不启用端口为25,SMTP的SSL启用端口为465

QQ邮箱 QQ企业邮箱
POP3服务器地址:pop.qq.com(端口:110) POP3服务器地址:pop.exmail.qq.com (SSL启用 端口:995)
SMTP服务器地址:smtp.qq.com (端口:25) SMTP服务器地址:smtp.exmail.qq.com(SSL启用 端口:587/465)
SMTP服务器需要身份验证

126邮箱 HotMail
POP3服务器地址:pop.126.com(端口:110) POP3服务器地址:pop.live.com (端口:995)
SMTP服务器地址:smtp.126.com(端口:25) SMTP服务器地址:smtp.live.com (端口:587)

china.com: 139邮箱
POP3服务器地址:pop.china.com(端口:110) POP3服务器地址:POP.139.com(端口:110)
SMTP服务器地址:smtp.china.com(端口:25) SMTP服务器地址:SMTP.139.com(端口:25)

python应用系列教程——python使用smtp上传邮件,使用pop3下载邮件相关推荐

  1. python应用系列教程——python使用smtp协议发送邮件:html文本邮件、图片邮件、文件附件邮件

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python使用smtp协议发送电子邮件.包含发送html文本邮件.包含图片附件的邮件,包含其他文件附件的邮件.可设置邮件的收发人,主题,内容 ...

  2. python应用系列教程——python中ftp操作:连接、登录、获取目录,重定向、上传下载,删除更改

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python中ftp操作: ftp=FTP() #设置变量 ftp.set_debuglevel(2) #打开调试级别2,显示详细信息 ftp ...

  3. python测试系列教程——python+Selenium+chrome自动化测试框架

    全栈工程师开发手册 (作者:栾鹏) python教程全解 需要的环境 浏览器(Firefox/Chrome/IE-) Python Selenium Selenium IDE(如果用Firefox) ...

  4. python基础系列教程——python基础语法全解

    点击此处​​​​​​​ python教程全解 了解python 1.  了解Python Python是一种解释型(这意味着开发过程中没有了编译这个环节).面向对象(支持面向对象的风格或代码封装在对象 ...

  5. python基础系列教程——Python的安装与测试:python解释器、PyDev编辑器、pycharm编译器

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:陈玓玏) python教程全解 白手起家,从头开启python的 ...

  6. python基础系列教程——python面向对象编程全解

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python面向对象编程全解. 面向对象技术简介 一个类占有一个独立的空间,类中的属性叫做类变量,类中的函数,叫做类的方法. 类(Class) ...

  7. python基础系列教程——python中的字符串和正则表达式全解

    全栈工程师开发手册 (作者:栾鹏) python教程全解 转义字符 正则表达式是建立在字符串的基础上,当需要在字符中使用特殊字符时,python用反斜杠\转义字符.如下表: 转义字符 描述\(在行尾时 ...

  8. python应用系列教程——python使用SocketServer实现网络服务器,socket实现客户端

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python使用SocketServer实现网络服务器 SocketServer简化了网络服务器的编写.在进行socket创建时,使用Sock ...

  9. python应用系列教程——python的GUI界面编程Tkinter全解

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python的GUI界面编程,常用的几个python库包含如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 ...

最新文章

  1. 上下定高 中间自适应_移动端布局上下固定中间自适应
  2. android信息中字符个数,在android中指定编辑文本中的字符数
  3. 云巡更系统 云设备巡检 电子云签到
  4. php memcached mysql_PHP Memcached使用详解
  5. 逼疯上海人的垃圾分类满月了:羊肉串变羊肉吕,奶茶里珍珠按颗算...
  6. 600个开源iOS应用库
  7. 5.并发工具和执行器(Concurrency Utilities and Executors)5.1 并发工具介绍
  8. java专用英语词典软件_英语词典app哪个好 5款好用的英语词典app推荐
  9. 日立仪器安捷伦系统不能连接到服务器,【维修案例】安捷伦E5071C网络分析仪开机无法正常进入系统...
  10. python自然语言学习之处理原始文本中3.1访问2554文本《罪与罚》出现问题解决
  11. 周志华机器学习--线性模型
  12. Oracle公有云的Modifiable VCN功能
  13. 民锋国际期货:期货交易 | 博弈之道,遵守法则
  14. TRUNCATE 命令用法
  15. Vi/Vim 编辑器常见命令
  16. stm32 智能避障小车(二)之sg90
  17. ei指什么_SCI、EI分别是什么意思
  18. 直播源列表转换php,TeleList(直播源列表转换软件)V2.3.11 正式版
  19. DPVS适配Intel E810-XXV系列25G网卡
  20. u8反启用固定资产_用友软件各模块启用间的关系,反启用的过程及注意事项

热门文章

  1. python分数类_利用标准库fractions模块让Python支持分数类型的方法详解
  2. 商品二因素、劳动二重性
  3. 前端elementui el-popover 多行文本换行显示优化
  4. MediaMuxer的使用
  5. 开源项目管理系统:ProjectForge
  6. 3D视频的质量评价报告 (MSU出品)
  7. pycharm项目中如何安装包_如何将Thymeleaf技术集成到SpringBoot项目中
  8. python3.7安装tensorflow-gpu_tensorflow-gpu安装的常见问题及解决方案
  9. linux实现开机自启动脚本
  10. jenkins无法连接仓库:Command “/usr/bin/git ls-remote -h -- https://gitee.com/xxx.git HEAD“ returned