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采用requests库模拟登录和抓取数据的简单示例
Jul 05 Python
Python中自定义函数的教程
Apr 27 Python
Python随手笔记第一篇(2)之初识列表和元组
Jan 23 Python
深入解析Python中的__builtins__内建对象
Jun 21 Python
Python 3实战爬虫之爬取京东图书的图片详解
Oct 09 Python
python pandas修改列属性的方法详解
Jun 09 Python
对pandas里的loc并列条件索引的实例讲解
Nov 15 Python
Python装饰器简单用法实例小结
Dec 03 Python
Python实现语音识别和语音合成功能
Sep 20 Python
Python hashlib模块加密过程解析
Nov 05 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
Python软件包安装的三种常见方法
Jul 07 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
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
解析php类的注册与自动加载
2013/07/05 PHP
php编程每天必学之表单验证
2016/03/01 PHP
jqPlot Option配置对象详解
2009/07/25 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
js命名空间写法示例
2015/12/18 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
使用ES6语法重构React代码详解
2017/05/09 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
Python脚本判断 Linux 是否运行在虚拟机上
2015/04/25 Python
Python的时间模块datetime详解
2017/04/17 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2019/06/24 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
python实现贪吃蛇游戏源码
2020/03/21 Python
使用anaconda安装pytorch的实现步骤
2020/09/03 Python
如何用Django处理gzip数据流
2021/01/29 Python
建议书怎么写
2014/03/12 职场文书
小学生清明节演讲稿
2014/09/05 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书
泰坦尼克号观后感
2015/06/04 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
python字符串常规操作大全
2021/05/02 Python
详解Python类和对象内容
2021/06/22 Python
浅谈Python数学建模之数据导入
2021/06/23 Python