1.1 FTP编程
FTP协议底层采用的是TCP协议完成的网络数据传输
FTP类型常见属性方法
login(user=’anonymous’, passwd=’’,acct=’’) 登录FTP服务器
pwd() 查看当前路径
cwd(path) 切换路径到指定的path路径
dir(path [,…[,cb]]) 显示path路径中文件的内容
nlst([path [,….]]) 类似dir(),返回文件名称列表
rename(old, name) 重命名old文件为new
retrlines(cmd [, cb]) 给定ftp命令,下载文本文件回调函数cb用于处理每一行文本
retrbinary(cmd, cb [, bs=8192 [,ra]])给定ftp命令,下载二进制文件回调函数cb处理每次读取的8k数据
storlines(cmd, f) 给定ftp命令,上传文本文件f
storbinary(cmd, f [, bs=8192]) 给定ftp命令,上传二进制文件f
delete(path) 删除path指定的某个文件
mkd(directory) 创建一个目录directory
rmd(directory) 删除指定的目录directory
quit() 关闭连接,退出FTP
FTP客户端实现:
import ftplib
def ftpconnect(host, username, passwd):
ftp = ftplib.FTP(host=host, user=username, passwd=passwd)
return ftp
def upload(ftp, localfile, remotefile):
buffersize = 1024
file = open(localfile, "rb")
ftp.storbinary("STOR " + remotefile, file, buffersize)
file.close()
def download(ftp, localfile, remotefile):
buffersize = 1024
file = open(localfile, "wb")
ftp.retrbinary("RETR " + remotefile, file.write, buffersize)
file.close()
if __name__ == "__main__":
ftp = ftpconnect("localhost", "zzy", "123456")
# upload(ftp, "d:/flashfxp.png", "newxp.png")
download(ftp, "d:/newxpp.png", "newxp.png")
ftp.quit()
1.2 SMTP、POP3、IMAP邮件收发
POP3(邮局协议的第三个版本)是用来接收邮件的,POP3允许用户从服务器上把邮件存储到本地主机(即自己计算机),同时删除保存在邮件服务器上的
邮件
IMAP(交互式邮件存取协议),也是用来接收邮件的,与POP3不同的是,下载邮件之后,邮件还保留在服务器上,客户端对邮
件的操作,都会反馈到服务器上,服务器会同步客户端的操作
SMTP(简单邮件传输协议),用来发送邮件,SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录
SMTP 服务器,这就使得那些垃圾邮件的散播 者无可乘之机。增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。
发送普通文本邮件
import smtplib
from email.mime.text import MIMEText
# smtp服务器
smtpserver = 'smtp.qiye.163.com'
# 发送方信息
user = 'zhangzhaoyu@qikux.com'
passwd = '********'
# 接收方信息
receiver = "496575233@qq.com"
message = MIMEText("我是 通过Python发送的", "plain", "utf-8")
message["from"] = user
message["to"] = receiver
message["subject"] = "测试邮件"
server = smtplib.SMTP(host=smtpserver, port=25)
server.login(user, passwd)
server.sendmail(from_addr=user, to_addrs=receiver, msg=message.as_string())
server.quit()
print("finish")
发送html
html = "<h1>标题1</h1> 我是 通过Python发送的 <i>作者</i>"
message = MIMEText(html, 'html', 'utf-8')
发送带附件邮件
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
serversmtp = "smtp.qiye.163.com"
user = 'zhangzhaoyu@qikux.com'
passwd = '*******'
receiver = 'zhangzhaoyu@qikux.com'
message = MIMEMultipart()
message["from"] = user
message["to"] = receiver
message["subject"] = "带附件邮件"
# html附件
html = "<b>图片附件</b><img src='cid:imageid'/>"
msghtml = MIMEText(html, "html", "utf-8")
message.attach(msghtml)
# 图片附件
fileimage = open("f:/flashfxp.png", 'rb')
msgimage = MIMEImage(fileimage.read())
fileimage.close()
msgimage.add_header("Content-ID", "imageid")
message.attach(msgimage)
# 文件附件
filedoc = open("d:/zzy.docx", "rb")
msgfile = MIMEText(filedoc.read(), "base64", "utf-8")
filedoc.close()
msgfile["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
msgfile["Content-Disposition"] = 'attachment; filename="test.docx"'
message.attach(msgfile)