Python如何实现邮件功能
用Python的smtplib就可以简单的实现邮件功能。什么是SMTP?邮件功能怎么实现?
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。
Python创建 SMTP 对象语法如下:
import smtplibsmtpObj = 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, socketfromaddr = a@b.comtoaddrs = ['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-8import sockett = 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.comrn') #发送内容print '111', t.recv(1024) t.send('auth loginrn') #进行邮箱的登录print '222', t.recv(1024) #打印在控制台t.send('dGVzdG1hbjE5ODA=rn') #base64位方式编码,解码为:testman1980print '333', t.recv(1024) #打印在控制台t.send('Zm9zdGVyd3UxOTc4rn')#base64位方式编码,解码为:fosterwu1978print '444', t.recv(1024) #打印在控制台t.send('mail from:<xxx1980@126.com>rn') #发件人 这里不是很清楚同样在下方的邮件内容中,为何还要在一次print '555', t.recv(1024) #打印在控制台t.send('rcpt to:<xxx@qq.com>rn') #改变了收件人,但是不明白下方也有一个收件人,下方是否会收到消息,并且优先级是怎样的,明天实验来看print '666', t.recv(1024) #打印在控制台t.send('datarn') #data的作用目前还没有发现,明天实践print '777', t.recv(1024) #打印在控制台#发送邮件内容t.send('from:xxx@126.comrn') #optional,可伪造别人的发件记录t.send('to:xxx@qq.comrn') #optional,可发给任何人t.send('subject:hello!rn')t.send('rn') #按照smtp协议要求,在标题后要发个空行t.send('mail test1111!rn') #发送邮件内容t.send('.rn')print '888', t.recv(1024)
到此这篇关于Python如何实现邮件功能的文章就介绍到这了,更多相关Python实现邮件功能的方法内容请搜索好吧啦网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好吧啦网!
相关文章:
1. js select支持手动输入功能实现代码2. PHP正则表达式函数preg_replace用法实例分析3. vue使用moment如何将时间戳转为标准日期时间格式4. Android studio 解决logcat无过滤工具栏的操作5. vue-drag-chart 拖动/缩放图表组件的实例代码6. 什么是Python变量作用域7. Android 实现彻底退出自己APP 并杀掉所有相关的进程8. bootstrap select2 动态从后台Ajax动态获取数据的代码9. Android Studio3.6.+ 插件搜索不到终极解决方案(图文详解)10. 一个 2 年 Android 开发者的 18 条忠告
