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多重继承新算法C3介绍
Sep 28 Python
Python 转义字符详细介绍
Mar 21 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
Feb 18 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
Apr 28 Python
基于MTCNN/TensorFlow实现人脸检测
May 24 Python
python使用writerows写csv文件产生多余空行的处理方法
Aug 01 Python
Python MySQL 日期时间格式化作为参数的操作
Mar 02 Python
Python参数传递实现过程及原理详解
May 14 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
Oct 15 Python
两行代码解决Jupyter Notebook中文不能显示的问题
Apr 24 Python
Python字符串对齐方法使用(ljust()、rjust()和center())
Apr 26 Python
Python爬虫基础之简单说一下scrapy的框架结构
Jun 26 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
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
php实现对文件压缩简单的方法
2019/09/29 PHP
jquery 上下滚动广告
2009/06/17 Javascript
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
2011/07/11 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
jQuery中用on绑定事件时需注意的事项
2017/03/19 Javascript
JS实现留言板功能
2017/06/17 Javascript
JavaScript"模拟事件"的注意要点详解
2019/02/13 Javascript
JavaScript中的类型检查
2020/02/03 Javascript
详细介绍Python中的偏函数
2015/04/27 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
python安装scipy的方法步骤
2019/06/26 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
如何在 Django 模板中输出 "{{"
2020/01/24 Python
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
初中学生评语大全
2014/04/24 职场文书
大学新闻系自荐书
2014/05/31 职场文书
咖啡店创业计划书范文
2014/09/15 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
小学班主任自我评价
2015/03/11 职场文书
公司保洁员管理制度
2015/08/04 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
k-means & DBSCAN 总结
2021/04/27 Python
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP
使用Pytorch训练two-head网络的操作
2021/05/28 Python
详细分析PHP7与PHP5区别
2021/06/26 PHP
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server