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访问纯真IP数据库的代码
May 19 Python
Python中处理时间的几种方法小结
Apr 09 Python
python爬虫入门教程--利用requests构建知乎API(三)
May 25 Python
基于Python函数的作用域规则和闭包(详解)
Nov 29 Python
Python快速排序算法实例分析
Nov 29 Python
python 日志 logging模块详细解析
Mar 31 Python
Jupyter 无法下载文件夹如何实现曲线救国
Apr 22 Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 Python
Python列表嵌套常见坑点及解决方案
Sep 30 Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 Python
使用Python爬取小姐姐图片(beautifulsoup法)
Feb 11 Python
python实现腾讯滑块验证码识别
Apr 27 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调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
2013/04/26 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
一个不错的仿携程自定义数据下拉选择select
2014/09/01 Javascript
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
JS实现超简单的仿QQ折叠菜单效果
2015/09/21 Javascript
js获取url传值的方法
2015/12/18 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
微信小程序 Toast自定义实例详解
2017/01/20 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
JS实现的点击表头排序功能示例
2017/03/27 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
Vue完整项目构建(进阶篇)
2018/02/10 Javascript
利用Python演示数型数据结构的教程
2015/04/03 Python
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
2018/04/19 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
python实现的config文件读写功能示例
2019/09/24 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
Python如何定义接口和抽象类
2020/07/28 Python
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
财务管理专业求职信
2014/06/11 职场文书
标准单位租车协议书
2014/09/23 职场文书
2015暑期社会实践个人总结
2015/07/13 职场文书
教师节随笔
2015/08/15 职场文书
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python