一、网络编程
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()
文章信息
- 本文作者:zhangxue
- 本文链接:https://lucksnow1989.github.io/article/13.脚本语言/python/基本语法/14网络编程.html
- 版权声明:本文为本人原创文章,遵循 CC 4.0 BY-NC-SA版权协议,转载请附上原文出处链接和本声明。