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版
Dec 07 Python
Python实现的数据结构与算法之基本搜索详解
Apr 22 Python
python使用socket进行简单网络连接的方法
Apr 29 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
Jul 11 Python
Django ORM框架的定时任务如何使用详解
Oct 19 Python
python邮件发送smtplib使用详解
Jun 16 Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 Python
树莓派与PC端在局域网内运用python实现即时通讯
Jun 22 Python
django 使用 PIL 压缩图片的例子
Aug 16 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
Feb 26 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
Apr 22 Python
详解python网络进程
Jun 15 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实现的简单分页类及用法示例
2016/05/06 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
PHP学习记录之数组函数
2018/06/01 PHP
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
2015/04/17 Javascript
JavaScript中的substr()方法使用详解
2015/06/06 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
jQuery实现鼠标滑动切换图片
2020/05/27 jQuery
基于JavaScript实现轮播图效果
2021/01/02 Javascript
Python中的命令行参数解析工具之docopt详解
2017/03/27 Python
django框架自定义用户表操作示例
2018/08/07 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
2018/10/26 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
Python Collatz序列实现过程解析
2019/10/12 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
HTML5是否真的可以取代Flash
2010/02/10 HTML / CSS
HTML5去掉输入框type为number时的上下箭头的实现方法
2020/01/03 HTML / CSS
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
宣传策划类求职信范文
2014/01/31 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
2014年仓库工作总结
2014/11/20 职场文书
2014年连锁店圣诞节活动方案
2014/12/09 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
小学生运动会广播
2015/08/19 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python
CSS使用伪类控制边框长度的方法
2022/01/18 HTML / CSS