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 相关文章推荐
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
python中私有函数调用方法解密
Apr 29 Python
python学生管理系统代码实现
Apr 05 Python
python Celery定时任务的示例
Mar 13 Python
python中yaml配置文件模块的使用详解
Apr 27 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
python调用外部程序的实操步骤
Mar 04 Python
python实现可逆简单的加密算法
Mar 22 Python
Python安装Flask环境及简单应用示例
May 03 Python
详解使用python爬取抖音app视频(appium可以操控手机)
Jan 26 Python
TensorFlow低版本代码自动升级为1.0版本
Feb 20 Python
Opencv中cv2.floodFill算法的使用
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 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
2015/05/09 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
选择器中含有空格在使用示例及注意事项
2013/07/31 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
jquery移动节点实例
2015/01/14 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
本地存储localStorage用法详解
2017/07/31 Javascript
解决vue.js this.$router.push无效的问题
2018/09/03 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
2017/11/08 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
Python3标准库之functools管理函数的工具详解
2020/02/27 Python
简单了解Python write writelines区别
2020/02/27 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
聊聊python中的异常嵌套
2020/09/01 Python
如何将json数据转换为python数据
2020/09/04 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
标记环介质访问控制协议
2016/03/27 面试题
学期研究性学习个人的自我评价
2014/01/09 职场文书
2014年上半年工作自我评价
2014/01/18 职场文书
《草原》教学反思
2014/02/15 职场文书
娱乐节目策划方案
2014/06/10 职场文书
2014年党的群众路线整改措施思想汇报
2014/10/12 职场文书
房地产公司财务总监岗位职责
2015/04/03 职场文书
单位介绍信格式范文
2015/05/04 职场文书
机关干部作风整顿心得体会
2016/01/22 职场文书