python中执行smtplib失败的处理方法


Posted in Python onJuly 01, 2020

经测试可用的发送邮件代码:

import smtplib
from email.mime.text import MIMEText
  
# 第三方 SMTP 服务
mail_host = "smtp.163.com" # SMTP服务器
mail_user = "username" # 用户名
mail_pass = "passwd" # 密码(这里的密码不是登录邮箱密码,而是授权码)
  
sender = 'sender_mail@163.com' # 发件人邮箱
receivers = ['receive_mail@qq.com'] # 接收人邮箱 
  
content = 'Python Send Mail !'
title = 'Python SMTP Mail Test' # 邮件主题
message = MIMEText(content, 'plain', 'utf-8') # 内容, 格式, 编码
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = title
  
try:
  smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 启用SSL发信, 端口一般是465
  smtpObj.login(mail_user, mail_pass) # 登录验证
  smtpObj.sendmail(sender, receivers, message.as_string()) # 发送
  print("mail has been send successfully.")
except smtplib.SMTPException as e:
  print(e)

问题解决与注意点:

1.报错:Error: A secure connection is requiered(such as ssl)

解决:因为邮箱SSL验证的问题,因此把smtplib.SMTP()改成smtplib.SMTP_SSL(),端口号为465。

2.报错:535, b'Error: authentication failed'

解决:可能是由于用户名不正确,因此代码中的用户名应该填写为邮箱地址@前面部分 ,或是在邮箱设置的帐户昵称。

3.SMTP服务器可根据发送的邮箱做相应的选择,如代码中使用163邮箱则设为mail_host = "smtp.163.com",

可以改成"smtp.126.com"、"smtp.qq.com"等等。

4.代码中的密码mail_pass为授权码,并非邮箱密码,授权码用于登录第三方邮件客户端的专用密码,

QQ邮箱可通过设置→帐户→生成授权码;网易邮箱126/163可通过设置→客户端授权密码。

知识点扩展:

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

smtp协议的基本命令包括:

  • HELO 向服务器标识用户身份
  • MAIL 初始化邮件传输 mail from:
  • RCPT 标识单个的邮件接收人;常在MAIL命令后面,可有多个rcpt to:
  • DATA 在单个或多个RCPT命令后,表示所有的邮件接收人已标识,并初始化数据传输,以.结束
  • VRFY 用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令
  • EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用
  • HELP 查询服务器支持什么命令
  • NOOP 无操作,服务器应响应OK
  • QUIT 结束会话
  • RSET 重置会话,当前传输被取消
  • MAIL FROM 指定发送者地址
  • RCPT TO 指明的接收者地址

到此这篇关于python中执行smtplib失败的处理方法的文章就介绍到这了,更多相关python中执行smtplib失败如何处理内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
举例讲解Python程序与系统shell交互的方式
Apr 09 Python
python计算牛顿迭代多项式实例分析
May 07 Python
Python制作刷网页流量工具
Apr 23 Python
用python 批量更改图像尺寸到统一大小的方法
Mar 31 Python
用Cython加速Python到“起飞”(推荐)
Aug 01 Python
django中上传图片分页三级联动效果的实现代码
Aug 30 Python
python3实现微型的web服务器
Sep 03 Python
实现Python与STM32通信方式
Dec 18 Python
对tensorflow中的strides参数使用详解
Jan 04 Python
使用 Python ssh 远程登陆服务器的最佳方案
Mar 06 Python
降低python版本的操作方法
Sep 11 Python
浅析Python中的套接字编程
Jun 22 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
Jul 01 #Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 #Python
学python需要去培训机构吗
Jul 01 #Python
详解python logging日志传输
Jul 01 #Python
python怎么调用自己的函数
Jul 01 #Python
解决keras模型保存h5文件提示无此目录问题
Jul 01 #Python
如何解决安装python3.6.1失败
Jul 01 #Python
You might like
如何给phpadmin一个保护
2006/10/09 PHP
php中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
PHP 高级课程笔记 面向对象
2009/06/21 PHP
PHP clearstatcache()函数详解
2010/03/02 PHP
php中获取关键词及所属来源搜索引擎名称的代码
2011/02/15 PHP
ThinkPHP的URL重写问题
2014/06/22 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
JS实现多物体缓冲运动实例代码
2013/11/29 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
Jquery的基本对象转换和文档加载用法实例
2015/02/25 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
JS模拟并美化的表单控件完整实例
2015/08/19 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
2017/07/22 jQuery
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
2017/09/23 jQuery
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
vue通过数据过滤实现表格合并
2020/11/30 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
2019/09/05 Javascript
超简单的微信小程序轮播图
2019/11/22 Javascript
Python3生成手写体数字方法
2018/01/30 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
2020/01/02 Python
python把一个字符串切开的实例方法
2020/09/27 Python
Ubuntu20下的Django安装的方法步骤
2021/01/24 Python
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
大一新生学期自我评价
2014/04/09 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
房屋租赁协议书
2014/10/18 职场文书
销售会议开幕词
2016/03/04 职场文书