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中对列表排序实例
Jan 04 Python
Python实现PS图像抽象画风效果的方法
Jan 23 Python
python生成器推导式用法简单示例
Oct 08 Python
Python使用Pandas读写Excel实例解析
Nov 19 Python
详解python破解zip文件密码的方法
Jan 13 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
深入浅析Python 命令行模块 Click
Mar 11 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
Mar 23 Python
python3 配置logging日志类的操作
Apr 08 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
Jun 04 Python
pytorch 中forward 的用法与解释说明
Feb 26 Python
Pygame游戏开发之太空射击实战敌人精灵篇
Aug 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
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
Javascript基础教程之argument 详解
2015/01/18 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
2015/11/04 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
JavaScript 对象字面量讲解
2016/06/06 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
微信小程序实现折叠面板
2018/01/31 Javascript
JavaScript 判断对象中是否有某属性的常用方法
2018/06/14 Javascript
原生JS实现自定义下拉单选选择框功能
2018/10/12 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
vue登录注册实例详解
2019/09/14 Javascript
vue实现验证用户名是否可用
2021/01/20 Vue.js
Python中MYSQLdb出现乱码的解决方法
2014/10/11 Python
通过C++学习Python
2015/01/20 Python
python实现在windows下操作word的方法
2015/04/28 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
Python基于回溯法子集树模板解决全排列问题示例
2017/09/07 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
基于python实现从尾到头打印链表
2019/11/02 Python
简单了解Python write writelines区别
2020/02/27 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
英国著名的药妆网站:Escentual
2016/07/29 全球购物
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
自荐信封面
2013/12/04 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
Python使用华为API为图像设置多个锚点标签
2022/04/12 Python
mysql幻读详解实例以及解决办法
2022/06/16 MySQL
详解Golang如何实现支持随机删除元素的堆
2022/09/23 Python