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实现代码
Oct 10 Python
PyCharm在win10的64位系统安装实例
Nov 26 Python
Pandas 数据处理,数据清洗详解
Jul 10 Python
python获取微信小程序手机号并绑定遇到的坑
Nov 19 Python
使用django实现一个代码发布系统
Jul 18 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
Oct 12 Python
Python 下载及安装详细步骤
Nov 04 Python
Python TCPServer 多线程多客户端通信的实现
Dec 31 Python
Python 中的pygame安装与配置教程详解
Feb 10 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
Feb 25 Python
解决django接口无法通过ip进行访问的问题
Mar 27 Python
深度学习小工程练习之垃圾分类详解
Apr 14 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
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
PHP之密码加密的几种方式
2015/07/29 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
JS求平均值的小例子
2013/11/29 Javascript
JQuery记住用户名和密码的具体实现
2014/04/04 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
AngularJS基础教程之简单介绍
2015/09/27 Javascript
Javascript循环删除数组中元素的几种方法示例
2017/05/18 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
package.json配置文件构成详解
2019/08/27 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
js实现特别简单的钟表效果
2020/09/14 Javascript
python使用requests模块实现爬取电影天堂最新电影信息
2019/04/03 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
Python collections模块使用方法详解
2019/08/28 Python
python 导入数据及作图的实现
2019/12/03 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
基于python 凸包问题的解决
2020/04/16 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
canvas绘制树形结构可视图形的实现
2020/04/03 HTML / CSS
美国乡村商店:Plow & Hearth
2016/09/12 全球购物
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
会计专业应届生求职信
2013/11/24 职场文书
小学新教师培训方案
2014/02/03 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
详解Python中的进程和线程
2021/06/23 Python
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers