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命令行交互提示符的方法
Jan 14 Python
在Linux上安装Python的Flask框架和创建第一个app实例的教程
Mar 30 Python
基于python的七种经典排序算法(推荐)
Dec 08 Python
Python分析学校四六级过关情况
Nov 22 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
Jan 11 Python
python实现逆序输出一个数字的示例讲解
Jun 25 Python
Python发送邮件测试报告操作实例详解
Dec 08 Python
python3编写ThinkPHP命令执行Getshell的方法
Feb 26 Python
使用matlab 判断两个矩阵是否相等的实例
May 11 Python
keras 自定义loss层+接受输入实例
Jun 28 Python
python如何实时获取tcpdump输出
Sep 16 Python
python 爬虫如何实现百度翻译
Nov 16 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 信息采集程序代码
2009/03/17 PHP
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
2014/07/14 PHP
php根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
JS获取iframe中longdesc属性的方法
2015/04/01 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
2015/04/06 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
Bootstrap入门书籍之(一)排版
2016/02/17 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
JavaScript字符串对象
2017/01/14 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
JavaScript异步上传图片文件的实例代码
2017/07/04 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
js中null与空字符串""的区别讲解
2019/01/17 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
Django之模型层多表操作的实现
2019/01/08 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2019/01/29 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
高中毕业生个人自我鉴定
2013/11/24 职场文书
关于人生的感言
2014/01/17 职场文书
中学生获奖感言
2014/02/04 职场文书
多媒体专业自我鉴定
2014/02/28 职场文书
软件项目开发计划书
2014/05/01 职场文书
装修安全责任协议书
2016/03/22 职场文书
2019年销售人员的职业生涯规划书
2019/03/25 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
分享提高 Python 代码的可读性的技巧
2022/03/03 Python
Java的Object类的九种方法
2022/04/13 Java/Android