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抓取网页内容示例分享
Feb 24 Python
Python利用Beautiful Soup模块创建对象详解
Mar 27 Python
Python使用pymysql小技巧
Jun 04 Python
python如何拆分含有多种分隔符的字符串
Mar 20 Python
Python元组拆包和具名元组解析实例详解
Mar 26 Python
python实现数据库跨服务器迁移
Apr 12 Python
python实现自动登录后台管理系统
Oct 18 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
Dec 12 Python
win10下python2和python3共存问题解决方法
Dec 23 Python
Django 限制访问频率的思路详解
Dec 24 Python
如何在python中实现线性回归
Aug 10 Python
Python中glob库实现文件名的匹配
Jun 18 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 file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
PHP实现的装箱算法示例
2018/06/23 PHP
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
js微信支付实现代码
2016/12/22 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
2019/06/24 Javascript
JavaScript对象属性操作实例解析
2020/02/04 Javascript
Webpack中SplitChunksPlugin 配置参数详解
2020/03/24 Javascript
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
详解Python3中yield生成器的用法
2015/08/20 Python
Python 专题三 字符串的基础知识
2017/03/19 Python
Python实现自动登录百度空间的方法
2017/06/10 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
python协程之动态添加任务的方法
2019/02/19 Python
基于python plotly交互式图表大全
2019/12/07 Python
毕业生求职推荐信
2013/11/04 职场文书
个人简历中自我评价
2014/02/11 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
施工质量承诺书范文
2014/05/30 职场文书
分公司经理任命书
2014/06/05 职场文书
最美孝心少年事迹材料
2014/08/15 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
留学推荐信英文范文
2015/03/26 职场文书
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技
Python基本知识点总结
2022/04/07 Python