一、网络编程

Python 提供了两个级别访问的网络服务。:
低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。
高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。

二、Socket

1.服务端
	import socket
	import sys
	# 创建 socket 对象
	serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	# 获取本地主机名
	host = 'localhost'
	port = 9999
	# 绑定端口
	serversocket.bind((host, port))
	# 设置最大连接数,超过后排队
	serversocket.listen(5)
	while True:
	    # 建立客户端连接
	    clientsocket,addr = serversocket.accept()      
	    print("连接地址: %s" % str(addr))
	    msg='欢迎访问菜鸟教程!'+ "\r\n"
	    clientsocket.send(msg.encode('utf-8'))
	    clientsocket.close()

2.客户端
	import socket
	import sys
	# 创建 socket 对象
	s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
	# 获取本地主机名
	host = 'localhost'
	# 设置端口好
	port = 9999
	# 连接服务,指定主机和端口
	s.connect((host, port))
	# 接收小于 1024 字节的数据
	msg = s.recv(1024)
	s.close()
	print (msg.decode('utf-8'))

三、Internet 模块

协议			功能用处			端口号		Python模块
HTTP		网页访问			80			httplib, urllib, xmlrpclib
NNTP		新闻文章,帖子	119			nntplib
FTP			文件传输			20			ftplib, urllib
SMTP		发送邮件			25			smtplib
POP3		接收邮件			110			poplib
IMAP4		获取邮件			143			imaplib
Telnet		命令行			23			telnetlib
Gopher		信息查找			70			gopherlib, urllib

四、SMTP发送邮件

1.普通邮件
	import smtplib  
	from email.mime.text import MIMEText  
	from email.header import Header  
	  
	sender = '15030518550@163.com'  
	receiver = '1039791136@qq.com'  
	subject = '放假通知'  
	smtpserver = 'smtp.163.com'  
	username = '15030518550@163.com'  
	password = '4100107223'  
	  
	msg = MIMEText('大家关好窗户!!!!!!!!','plain','utf-8')#中文需参数‘utf-8',单字节字符不需要  
	msg['Subject'] = Header(subject, 'utf-8')  
	msg['From'] = '领导<' + sender + '>'    
	msg['To'] = receiver  
	smtp = smtplib.SMTP()  
	smtp.connect('smtp.163.com')  
	smtp.login(username, password)  
	smtp.sendmail(sender, receiver, msg.as_string())  
	smtp.quit() 
	
2.HTML格式的邮件(基本上现在所有的邮件都是这种)
	import smtplib
	from email.mime.text import MIMEText
	from email.header import Header
	  
	sender = '15030518550@163.com'  
	receiver = '1039791136@qq.com'  
	subject = '放假通知'  
	smtpserver = 'smtp.163.com'  
	username = '15030518550@163.com'  
	password = '4100107223'  
	
	mail_msg = """
	<p>Python 邮件发送测试...</p>
	<p><a href="http://www.runoob.com">这是一个链接</a></p>
	"""
	
	msg = MIMEText(mail_msg,'html','utf-8')#中文需参数‘utf-8',单字节字符不需要  
	msg['Subject'] = Header(subject, 'utf-8')  
	msg['From'] = '领导<' + sender + '>'    
	msg['To'] = receiver  
	
	smtp = smtplib.SMTP()  
	smtp.connect('smtp.163.com')  
	smtp.login(username, password)  
	smtp.sendmail(sender, receiver, msg.as_string())  
	smtp.quit()
	
3.发送附件
	import smtplib
	from email.mime.text import MIMEText
	from email.mime.multipart import MIMEMultipart
	from email.header import Header
	  
	sender = '15030518550@163.com'  
	receiver = '1039791136@qq.com'  
	subject = '放假通知'  
	smtpserver = 'smtp.163.com'  
	username = '15030518550@163.com'  
	password = '4100107223'  
	
	
	#创建一个带附件的实例
	message = MIMEMultipart()
	message['From'] = '张雪<' + sender + '>'
	message['To'] = receiver
	subject = 'Python SMTP 邮件测试'
	message['Subject'] = Header(subject, 'utf-8')
	
	#邮件正文内容
	message.attach(MIMEText('这是菜鸟教程Python 邮件发送测试……', 'plain', 'utf-8'))
	
	# 构造附件1,传送当前目录下的 test.txt 文件
	att1 = MIMEText(open('d:/a.txt', 'rb').read(), 'base64', 'utf-8')
	att1["Content-Type"] = 'application/octet-stream'
	# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
	att1["Content-Disposition"] = 'attachment; filename=\'avc.txt\' ' 
	message.attach(att1)
	
	smtp = smtplib.SMTP()  
	smtp.connect('smtp.163.com')  
	smtp.login(username, password)  
	smtp.sendmail(sender, receiver, message.as_string())  
	smtp.quit()
	
4.内容有图片
	import smtplib
	from email.mime.text import MIMEText
	from email.mime.image import MIMEImage
	from email.mime.multipart import MIMEMultipart
	from email.header import Header
	  
	sender = '15030518550@163.com'  
	receiver = '1039791136@qq.com'  
	subject = '放假通知'  
	smtpserver = 'smtp.163.com'  
	username = '15030518550@163.com'  
	password = '4100107223'  
	
	
	#创建一个带附件的实例
	message = MIMEMultipart()
	message['From'] = '张雪<' + sender + '>'
	message['To'] = receiver
	subject = 'Python SMTP 邮件测试'
	message['Subject'] = Header(subject, 'utf-8')
	
	#图片
	msgAlternative = MIMEMultipart('alternative')
	message.attach(msgAlternative)
	
	#邮件正文内容
	mail_msg = """
	<p>Python 邮件发送测试...</p>
	<p><a href="http://www.runoob.com">菜鸟教程链接</a></p>
	<p>图片演示:</p>
	<p><img src="cid:image1"></p>
	"""
	msgAlternative.attach(MIMEText(mail_msg, 'html', 'utf-8'))
	
	# 指定图片为当前目录
	fp = open('d:/1.jpg', 'rb')
	msgImage = MIMEImage(fp.read())
	fp.close()
	
	# 定义图片 ID,在 HTML 文本中引用
	msgImage.add_header('Content-ID', '<image1>')
	message.attach(msgImage) 
	
	smtp = smtplib.SMTP()  
	smtp.connect('smtp.163.com')  
	smtp.login(username, password)  
	smtp.sendmail(sender, receiver, message.as_string())  
	smtp.quit()

文章信息

张雪随笔
master
Homepage
Issues
Download

This Software is under the terms of The Unlicense.