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中函数的参数
Apr 27 Python
Python中的if、else、elif语句用法简明讲解
Mar 11 Python
浅谈python字符串方法的简单使用
Jul 18 Python
Python图像处理之识别图像中的文字(实例讲解)
May 10 Python
浅谈numpy生成数组的零值问题
Nov 12 Python
python爬取指定微信公众号文章
Dec 20 Python
Python实现滑动平均(Moving Average)的例子
Aug 24 Python
Python任务调度模块APScheduler使用
Apr 15 Python
python 如何用map()函数创建多线程任务
Apr 07 Python
pytorch 实现变分自动编码器的操作
May 24 Python
详解运行Python的神器Jupyter Notebook
Jun 03 Python
Python进程间的通信之语法学习
Apr 11 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中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
PHP设计模式之PHP迭代器模式讲解
2019/03/22 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
js修改table中Td的值(定义td的单击事件)
2013/01/10 Javascript
js调用css属性写法
2013/09/21 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
总结Node.js中的一些错误类型
2016/08/15 Javascript
文件上传,iframe跨域数据提交的实现
2016/11/18 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
vue-cli webpack模板项目搭建及打包时路径问题的解决方法
2018/02/26 Javascript
JS实现左边列表移到到右边列表功能
2018/03/28 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
python读写文件操作示例程序
2013/12/02 Python
python实现向ppt文件里插入新幻灯片页面的方法
2015/04/28 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
python爬虫使用正则爬取网站的实现
2020/08/03 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
python中类与对象之间的关系详解
2020/12/16 Python
纯HTML5+CSS3制作生日蛋糕代码
2016/11/16 HTML / CSS
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
纺织工程专业个人求职信范文
2014/01/27 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
HTML+CSS 实现顶部导航栏菜单制作
2021/06/03 HTML / CSS
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript