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中lambda与def用法对比实例分析
Apr 30 Python
python实现字符串连接的三种方法及其效率、适用场景详解
Jan 13 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
Jun 01 Python
对python中array.sum(axis=?)的用法介绍
Jun 28 Python
python实现简单图片物体标注工具
Mar 18 Python
详解python数据结构和算法
Apr 18 Python
Python开发之基于模板匹配的信用卡数字识别功能
Jan 13 Python
Python版中国省市经纬度
Feb 11 Python
Django限制API访问频率常用方法解析
Oct 12 Python
最新pycharm安装教程
Nov 18 Python
python爬虫工具例举说明
Nov 30 Python
写好Python代码的几条重要技巧
May 21 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采集相关教程之一 CURL函数库
2010/02/15 PHP
php合并数组并保留键值的实现方法
2018/03/12 PHP
Yii框架where查询用法实例分析
2019/10/22 PHP
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
详解js私有作用域中创建特权方法
2016/01/25 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
AngularJS2中一种button切换效果的实现方法(二)
2017/03/27 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
react中的ajax封装实例详解
2017/10/17 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
web.py获取上传文件名的正确方法
2014/08/26 Python
Python多线程实例教程
2014/09/06 Python
python批量提交沙箱问题实例
2014/10/08 Python
简述Python中的面向对象编程的概念
2015/04/27 Python
Python实现的最近最少使用算法
2015/07/10 Python
Windows下为Python安装Matplotlib模块
2015/11/06 Python
Python的净值数据接口调用示例分享
2016/03/15 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
使用python接入微信聊天机器人
2020/03/31 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
有创意的广告词
2014/03/18 职场文书
学校节能减排倡议书
2014/05/16 职场文书
代办委托书怎么写
2014/08/01 职场文书
公务员学习习总书记“三严三实”思想汇报
2014/09/19 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
起诉书范文
2015/05/20 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书