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脚本关闭文件操作的机制
Jun 28 Python
python机器学习库常用汇总
Nov 15 Python
python实现类之间的方法互相调用
Apr 29 Python
python得到电脑的开机时间方法
Oct 15 Python
Python随机生成身份证号码及校验功能
Dec 04 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
Jan 05 Python
python数值基础知识浅析
Nov 19 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
Apr 26 Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 Python
python使用建议技巧分享(三)
Aug 18 Python
python3 sqlite3限制条件查询的操作
Apr 07 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
PHP源码之explode使用说明
2011/08/05 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
2020/05/02 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
前端常见跨域解决方案(全)
2017/09/19 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
回顾Javascript React基础
2019/06/15 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
python三元运算符实现方法
2013/12/17 Python
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
python实现代码统计程序
2019/09/19 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
英国领先的电子、技术和办公用品购物网站:Ebuyer
2018/04/04 全球购物
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
旅游个人求职信范文
2014/01/30 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
入党积极分子个人总结
2015/03/02 职场文书
保研推荐信范文
2015/03/25 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
开学典礼校长致辞
2015/07/29 职场文书
WordPress多语言翻译插件 - WPML使用教程
2021/04/01 PHP
python中__slots__节约内存的具体做法
2021/07/04 Python
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android
MySQL 计算连续登录天数
2022/05/11 MySQL