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合并文本文件示例
Feb 07 Python
用Python中的__slots__缓存资源以节省内存开销的方法
Apr 02 Python
Python实现比较两个文件夹中代码变化的方法
Jul 10 Python
python smtplib模块自动收发邮件功能(二)
May 22 Python
python 从csv读数据到mysql的实例
Jun 21 Python
Python中分支语句与循环语句实例详解
Sep 13 Python
详解pytorch 0.4.0迁移指南
Jun 16 Python
PyCharm 创建指定版本的 Django(超详图解教程)
Jun 18 Python
Django ORM 查询管理器源码解析
Aug 05 Python
python调用matplotlib模块绘制柱状图
Oct 18 Python
Python无头爬虫下载文件的实现
Apr 02 Python
python主要用于哪些方向
Jul 05 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
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
php循环创建目录示例分享(php创建多级目录)
2014/03/04 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
2017/02/18 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
2014/01/23 Python
Python中的CURL PycURL使用例子
2014/06/01 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
python使用__slots__让你的代码更加节省内存
2018/09/05 Python
python+splinter实现12306网站刷票并自动购票流程
2018/09/25 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
详解django2中关于时间处理策略
2019/03/06 Python
Django 拆分model和view的实现方法
2019/08/16 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
圣诞节红领巾广播稿
2014/02/03 职场文书
招商专员岗位职责
2014/02/08 职场文书
汉语言文学职业规划
2014/02/14 职场文书
民族团结先进个人事迹材料
2014/06/02 职场文书
转让协议书范本
2014/09/13 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
大学生个人学习总结
2015/02/15 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
跑吧孩子观后感
2015/06/10 职场文书
运动会加油稿30字
2015/07/21 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
解析Java异步之call future
2021/06/14 Java/Android