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字符串连接的N种方式总结
Sep 17 Python
python使用urlparse分析网址中域名的方法
Apr 15 Python
Python中List.index()方法的使用教程
May 20 Python
在MAC上搭建python数据分析开发环境
Jan 26 Python
python列表的常用操作方法小结
May 21 Python
详解Python 模拟实现生产者消费者模式的实例
Aug 10 Python
Python机器学习之决策树算法
Dec 22 Python
Python图片的横坐标汉字实例
Dec 04 Python
python Popen 获取输出,等待运行完成示例
Dec 30 Python
推荐8款常用的Python GUI图形界面开发框架
Feb 23 Python
python实现同一局域网下传输图片
Mar 20 Python
基于Python+QT的gui程序开发实现
Jul 03 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代码
2012/09/14 PHP
PHP应用JSON技巧讲解
2013/02/03 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
PHP 快速排序算法详解
2014/11/10 PHP
PHP产生不重复随机数的5个方法总结
2014/11/12 PHP
php图像处理类实例
2015/07/28 PHP
php中switch语句用法详解
2015/08/17 PHP
如何判断php mysqli扩展类是否开启
2016/12/24 PHP
PHP MYSQL简易交互式站点开发
2016/12/27 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
Javascript 实用小技巧
2010/04/07 Javascript
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
jquery实现用户信息修改验证输入方法汇总
2015/07/18 Javascript
javascript实现全角转半角的方法
2016/01/23 Javascript
js学习之----深入理解闭包
2016/11/21 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
2017/08/24 jQuery
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
2019/05/22 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
2019/08/28 Javascript
vue通过v-html指令渲染的富文本无法修改样式的解决方案
2020/05/20 Javascript
Python中条件判断语句的简单使用方法
2015/08/21 Python
Python程序中的观察者模式结构编写示例
2016/05/27 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
python线程信号量semaphore使用解析
2019/11/30 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
2015年小学师德师风建设工作总结
2015/10/23 职场文书
学校运动会开幕词
2016/03/03 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python