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


Posted in Python onMarch 02, 2021

简介

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

SMTP协议

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

环境调试

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

1.先登录到163.com邮箱中(网易邮箱),如下图

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

2.看到邮箱上面的功能栏中有一个“设置”的选项,单击该选项,然后选择下拉菜单的“POP3/SMTP/IMAP”

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

3.如下图所示,上面红框的两个必须勾选上,如没有勾选,要选择开启就可以勾选上了,然后可以看到下面红框里是SMTP服务器:smtp.163.com

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

实现代码

经过上面的设置后就将环境调试好了,下面就可以实现代码了,推荐使用pycharm4.5.3编辑器来编写代码,下面的代码在python2.7和python3.4版本测试都可使用。

#coding:utf-8 #强制使用utf-8编码格式
import smtplib #加载smtplib模块
from email.mime.text import MIMEText
from email.utils import formataddr
my_sender='发件人邮箱账号' #发件人邮箱账号,为了后面易于维护,所以写成了变量
my_user='收件人邮箱账号' #收件人邮箱账号,为了后面易于维护,所以写成了变量
def mail():
 ret=True
 try:
 msg=MIMEText('填写邮件内容','plain','utf-8')
 msg['From']=formataddr(["发件人邮箱昵称",my_sender]) #括号里的对应发件人邮箱昵称、发件人邮箱账号
 msg['To']=formataddr(["收件人邮箱昵称",my_user]) #括号里的对应收件人邮箱昵称、收件人邮箱账号
 msg['Subject']="主题" #邮件的主题,也可以说是标题

 server=smtplib.SMTP("smtp.xxx.com",25) #发件人邮箱中的SMTP服务器,端口是25
 server.login(my_sender,"发件人邮箱密码") #括号中对应的是发件人邮箱账号、邮箱密码
 server.sendmail(my_sender,[my_user,],msg.as_string()) #括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
 server.quit() #这句是关闭连接的意思
 except Exception: #如果try中的语句没有执行,则会执行下面的ret=False
 ret=False
 return ret

ret=mail()
if ret:
 print("ok") #如果发送成功则会返回ok,稍等20秒左右就可以收到邮件
else:
 print("filed") #如果发送失败则会返回filed

如果发送成功则会返回ok,否则为执行不成功,如下图:

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

开拓视野

虽然代码可以用了,但是不免得有些人就爱瞎折腾,玩着玩着就把代码玩坏了,所以这里附上几个知识点以解你之疑惑。

1.看到上面代码第一行的“#coding:utf-8”没有,相信很多看这代码的人都不怎么注意这一行,反正这和代码实现又没啥关系,保存时选择utf-8格式就行了嘛;告诉你们哦这一行代码在python中非常重要,最好写每一页都要加上强制字符编码,因为python2版本它默认识别ASCII编码,所以当中文字符出现在python中它是不认的,出现的错误提示如下图所示:

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

错误提示示例:File"F:/python/s12/pymail.py",line2

SyntaxError:Non-ASCIIcharacter'\xe5'infileF:/python/s12/pymail.pyonline2,butnoencodingdeclared;seehttp://www.python.org/peps/pep-0263.htmlfordetails

所以当出现上面的编码错误提示时,可以在页面的第一行加上

#coding:utf-8 #强制编码为utf-8

#coding:GBK #强制编码为GBK

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

Python 相关文章推荐
实例解析Python设计模式编程之桥接模式的运用
Mar 02 Python
20招让你的Python飞起来!
Sep 27 Python
独特的python循环语句
Nov 20 Python
对python中的logger模块全面讲解
Apr 28 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
Jun 01 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
Oct 29 Python
python+flask实现API的方法
Nov 21 Python
Python GUI编程完整示例
Apr 04 Python
django-rest-swagger对API接口注释的方法
Aug 29 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 Python
python中使用you-get库批量在线下载bilibili视频的教程
Mar 10 Python
利用 Python 的 Pandas和 NumPy 库来清理数据
Apr 13 Python
python logging 日志轮转文件不删除问题的解决方法
Aug 02 #Python
python中的字典使用分享
Jul 31 #Python
Python随机生成数据后插入到PostgreSQL
Jul 28 #Python
python3新特性函数注释Function Annotations用法分析
Jul 28 #Python
python中的格式化输出用法总结
Jul 28 #Python
Python中字符串的常见操作技巧总结
Jul 28 #Python
Python中不同进制的语法及转换方法分析
Jul 27 #Python
You might like
火影忍者:这才是千手柱间和扉间的真正死因,角都就比较搞笑了!
2020/03/10 日漫
Terran剧情介绍
2020/03/14 星际争霸
php strcmp使用说明
2010/04/22 PHP
Youku 视频绝对地址获取的方法详解
2013/06/26 PHP
PHP实现文件下载详解
2014/11/27 PHP
ThinkPHP入口文件设置及相关注意事项分析
2014/12/05 PHP
php实现图片缩略图的方法
2016/03/29 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
2019/10/24 PHP
html 锁定页面(js遮罩层弹出div效果)
2009/10/27 Javascript
JS解析XML的实现代码
2009/11/12 Javascript
JavaScript中URL编码函数代码
2011/01/11 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
js使用ajax读博客rss示例
2014/05/06 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
mint-ui在vue中的使用示例
2018/04/05 Javascript
使用webpack搭建pixi.js开发环境
2020/02/12 Javascript
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
浅谈对yield的初步理解
2017/05/29 Python
Python实现的三层BP神经网络算法示例
2018/02/07 Python
转换科学计数法的数值字符串为decimal类型的方法
2018/07/16 Python
关于Python核心框架tornado的异步协程的2种方法详解
2019/08/28 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
2019/11/21 Python
python支持多线程的爬虫实例
2019/12/21 Python
Python3 filecmp模块测试比较文件原理解析
2020/03/23 Python
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
历史系毕业生自荐信
2013/10/28 职场文书
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
单位婚育证明范本
2014/11/21 职场文书
2015年采购员工作总结
2015/04/27 职场文书
逃课检讨书范文
2015/05/06 职场文书