python3实现SMTP发送邮件详细教程


Posted in Python onJune 19, 2018

简介

  Python发送邮件的教程本人在网站搜索的时候搜索出来了一大堆,但是都是说了一大堆原理然后就推出了实现代码,我测试用给出的代码进行发送邮件时都不成功,后面找了很久才找到原因,这都是没有一个详细的环境调试导致,所以今天特出一个详细的教程,一步一步从环境调试到代码实现整一个教程,希望对还在苦苦寻找解决方法却迟迟不能得到有效解决的朋友们一点帮助。

SMTP协议

  首先了解SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议。SMTP协议的默认TCP端口号是25。

环境调试

  上面说了是使用SMTP协议发送的邮件,所以需要先查看你的发件人邮箱是否有开启SMTP协议,如没有,则需要开启,我测试使用的是163.com的邮箱作为发信人邮箱,在设置中开启SMTP协议如下图所示。

python3实现SMTP发送邮件详细教程

  测试的前提是你需要开通客户端授权,开通后会让你设置密码,那个密码要记好,下面的passwd接收的是授权密码而不是邮箱密码!否则会出现下图所示的错误提示:

python3实现SMTP发送邮件详细教程

Demo

import smtplib
from email.header import Header
from email.mime.text import MIMEText

# 第三方 SMTP 服务
mail_host = "smtp.163.com"   # SMTP服务器
mail_user = "***"         # 用户名
mail_pass = "***"        # 授权密码,非登录密码

sender = ***@163.com'  # 发件人邮箱(最好写全, 不然会失败)
receivers = [***@qq.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

content = '我用Python'
title = '人生苦短' # 邮件主题

def sendEmail():

  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)

def send_email2(SMTP_host, from_account, from_passwd, to_account, subject, content):
  email_client = smtplib.SMTP(SMTP_host)
  email_client.login(from_account, from_passwd)
  # create msg
  msg = MIMEText(content, 'plain', 'utf-8')
  msg['Subject'] = Header(subject, 'utf-8') # subject
  msg['From'] = from_account
  msg['To'] = to_account
  email_client.sendmail(from_account, to_account, msg.as_string())

  email_client.quit()

if __name__ == '__main__':
  sendEmail()
  # receiver = '***'
  # send_email2(mail_host, mail_user, mail_pass, receiver, title, content)

刚开始测试时,第一次发送邮件是成功的,但是后面再次测试时却出现了提示554,根据给出的网址查看错误代码 

554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件。如下图所示:

python3实现SMTP发送邮件详细教程

针对该问题,究竟如何解决,会在下一篇博文中进行展开。若看到的朋友有好的解决方法,还请提出,在此感谢。

附 参考资料

附 电子书福利(免积分下载)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python创建系统目录的方法
Mar 11 Python
浅谈Python爬取网页的编码处理
Nov 04 Python
Python中正则表达式详解
May 17 Python
详谈python read readline readlines的区别
Sep 22 Python
python中requests库session对象的妙用详解
Oct 30 Python
flask框架实现连接sqlite3数据库的方法分析
Jul 16 Python
解决Python plt.savefig 保存图片时一片空白的问题
Jan 10 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
Jun 24 Python
Python实现个人微信号自动监控告警的示例
Jul 03 Python
使用python画社交网络图实例代码
Jul 10 Python
python实现学生成绩测评系统
Jun 22 Python
在终端启动Python时报错的解决方案
Nov 20 Python
Python SVM(支持向量机)实现方法完整示例
Jun 19 #Python
Tensorflow使用tfrecord输入数据格式
Jun 19 #Python
Tensorflow 训练自己的数据集将数据直接导入到内存
Jun 19 #Python
python如何爬取个性签名
Jun 19 #Python
详解TensorFlow查看ckpt中变量的几种方法
Jun 19 #Python
TensorFlow 滑动平均的示例代码
Jun 19 #Python
python3个性签名设计实现代码
Jun 19 #Python
You might like
php防盗链的常用方法小结
2010/07/02 PHP
php实现的简易扫雷游戏实例
2015/07/09 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
jquery validate使用攻略 第四步
2010/07/01 Javascript
40款非常有用的 jQuery 插件推荐(系列一)
2011/12/21 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
javascript生成大小写字母
2015/07/03 Javascript
js实现浏览本地文件并显示扩展名的方法
2015/08/17 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
浅谈javascript中的 “ && ” 和 “ || ”
2017/02/02 Javascript
element-ui中select组件绑定值改变,触发change事件方法
2018/08/24 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
2019/10/09 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
Python对切片命名的实现方法
2018/10/16 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
自我鉴定范文200字
2013/10/02 职场文书
应届生煤化工求职信
2013/10/21 职场文书
寒假实习自荐信
2014/01/26 职场文书
劳动之星获奖感言
2014/02/01 职场文书
丑小鸭教学反思
2014/02/03 职场文书
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
2014旅游局党组书记党建工作汇报材料
2014/11/02 职场文书
个人优缺点总结
2015/02/28 职场文书
学习焦裕禄先进事迹心得体会
2016/01/23 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
vue router 动态路由清除方式
2022/05/25 Vue.js