Python如何实现邮件功能


Posted in Python onMay 27, 2020

用Python的smtplib就可以简单的实现邮件功能。什么是SMTP?邮件功能怎么实现?

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

Python创建 SMTP 对象语法如下:

import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

参数说明:

host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如: runoob.com,这个是可选参数。

port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下 SMTP 端口号为25。

local_hostname: 如果 SMTP 在你的本机上,你只需要指定服务器地址为 localhost 即可。

Python SMTP 对象使用 sendmail 方法发送邮件,语法如下:

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])

参数说明:

from_addr: 邮件发送者地址。

to_addrs: 字符串列表,邮件发送地址。

msg: 发送消息

这里要注意一下第三个参数,msg 是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意 msg 的格式。这个格式就是 smtp 协议中定义的格式。

分享给大家供大家参考。具体实现方法如下:

import smtplib, socket
fromaddr = a@b.com
toaddrs = ["c@d.com",   "e@f.com"]
msg = open("multimsg.eml", "r").read()
try:
 server = smtplib.SMTP('10.0.0.1')
 result = server.sendmail(fromaddr, toaddrs, msg)
 server.quit()
 if result:
  for r in result.keys():
   print "Error sending to", r
   rt = result[r]
   print "Code", rt[0], ":", rt[1]
except (smtplib.SMTPException, socket.error), arg:
 print "SMTP Server could not send mail", arg

实例补充:

python实现发送邮件功能

'''套接字是为特定的网络协议(例如TCP/IP,ICMP/IP,UDP/IP等),允许程序和接受并进行连接,要在python 中建立具有TCP和流套接字的简单服务器,需要使用socket模块,利用该模块包含的函数和类定义,可生成通过网络通信的程序,分为六步服务端的一些方法:
1.  何为套接字
内核中套接字是一层一层进行抽象展示的,把共性的东西抽取出来,这样对外提供的接口可以尽量的统一,Socket函数中的三个参数其实就是把抽象的socket具体化的条件,famil参数决定了图中所示的第二层通信域,type决定了第三层的通信模式,protocol
决定了第四层真正的通信协议。
首先了解这个内容是是在哪个层?是如何通信的
http://www.cnblogs.com/wangcq/p/3520400.html,看了以方法,大体服务器和客户端就分为这几步
1.创建对象
2.将socket绑定在指定地址上,socket.bing(地址)
3.第3步,绑定后,必须准备好套接字,对端口进行监听 socket.listen(backlog)
4.socket的accept方法等待客户请求一个连接
5.处理阶段
6.传输结束,服务器调用socket的close方法以关闭连接
客户端就为4个步骤:
1.创建socket连接服务器
2.使用socket的connect方法连接服务器 socket.connect((host,port))
3.客户和服务器通过send和recv方法通信
4.调用socket的close方法通信
'''
#encoding=utf-8
import socket
t = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
'''创建socket对象,格式socket.socket(family,type),family格式是AF_INET(对于IPV4协议的TCP和 UDP),type参数,SOCK_STREAM(流套接字,提供面向连接,可靠的数据服务,用于TCP)或者 SOCK_DGRAM(数据报文套接字提供无无面向连接,不可靠的数据服务,用于UDP),SOCK_RAW(raw套接字,较低层的协议)'''
t.connect(('smtp.126.com', 25)) #建立连接
print "start", t.recv(1024) #使用recv方法通信,传输数据 
t.send("helo 126.com\r\n") #发送内容
print "111", t.recv(1024) 
t.send("auth login\r\n") #进行邮箱的登录
print "222", t.recv(1024) #打印在控制台
t.send("dGVzdG1hbjE5ODA=\r\n") #base64位方式编码,解码为:testman1980
print "333", t.recv(1024) #打印在控制台
t.send("Zm9zdGVyd3UxOTc4\r\n")#base64位方式编码,解码为:fosterwu1978
print "444", t.recv(1024) #打印在控制台
t.send("mail from:<xxx1980@126.com>\r\n") #发件人 这里不是很清楚同样在下方的邮件内容中,为何还要在一次
print "555", t.recv(1024) #打印在控制台
t.send("rcpt to:<xxx@qq.com>\r\n") #改变了收件人,但是不明白下方也有一个收件人,下方是否会收到消息,并且优先级是怎样的,明天实验来看
print "666", t.recv(1024) #打印在控制台
t.send("data\r\n")  #data的作用目前还没有发现,明天实践
print "777", t.recv(1024)  #打印在控制台
#发送邮件内容
t.send("from:xxx@126.com\r\n") #optional,可伪造别人的发件记录
t.send("to:xxx@qq.com\r\n")  #optional,可发给任何人
t.send("subject:hello!\r\n")
t.send("\r\n") #按照smtp协议要求,在标题后要发个空行
t.send("mail test1111!\r\n") #发送邮件内容
t.send(".\r\n")
print "888", t.recv(1024)

到此这篇关于Python如何实现邮件功能的文章就介绍到这了,更多相关Python实现邮件功能的方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用Python编写简单的画图板程序的示例教程
Dec 08 Python
TensorFlow实现MLP多层感知机模型
Mar 09 Python
python 去除txt文本中的空格、数字、特定字母等方法
Jul 24 Python
Python+threading模块对单个接口进行并发测试
Jun 25 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
使用Python为中秋节绘制一块美味的月饼
Sep 11 Python
使用python绘制温度变化雷达图
Oct 18 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
Jan 13 Python
基于python连接oracle导并出数据文件
Apr 28 Python
VSCODE配置Markdown及Markdown基础语法详解
Jan 19 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
Feb 16 Python
python必学知识之文件操作(建议收藏)
May 30 Python
Python中内建模块collections如何使用
May 27 #Python
Python OpenCV实现测量图片物体宽度
May 27 #Python
Python中socket网络通信是干嘛的
May 27 #Python
Python中SQLite如何使用
May 27 #Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
May 27 #Python
Python中如何引入第三方模块
May 27 #Python
Python中的wordcloud库安装问题及解决方法
May 27 #Python
You might like
深入浅析php中sprintf与printf函数的用法及区别
2016/01/08 PHP
php cookie工作原理与实例详解
2016/07/18 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
PHP和MYSQL实现分页导航思路详解
2017/04/11 PHP
php简单实现单态设计模式的方法分析
2017/07/28 PHP
Javascript 继承机制实例
2009/08/12 Javascript
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
JS跨域代码片段
2012/08/30 Javascript
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
2014/01/23 Javascript
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
详解Vite的新体验
2021/02/22 Javascript
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
CentOS7.3编译安装Python3.6.2的方法
2018/01/22 Python
Anaconda 离线安装 python 包的操作方法
2018/06/11 Python
pyqt5中动画的使用详解
2020/04/01 Python
python中np是做什么的
2020/07/21 Python
中国制造网:Made-in-China.com
2019/10/25 全球购物
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
关于环保的建议书400字
2014/03/12 职场文书
纪律教育学习月活动总结
2014/08/27 职场文书
兵马俑的导游词
2015/02/02 职场文书
大学毕业生自我评价
2015/03/02 职场文书
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js