您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

用Python实现一个简单的能够发送带附件的邮件程序的教程

2025/9/5 10:57:13发布18次查看
基本思路就是,使用mimemultipart来标示这个邮件是多个部分组成的,然后attach各个部分。如果是附件,则add_header加入附件的声明。
在python中,mime的这些对象的继承关系如下。
mimebase
    |-- mimenonmultipart
        |-- mimeapplication
        |-- mimeaudio
        |-- mimeimage
        |-- mimemessage
        |-- mimetext
    |-- mimemultipart
一般来说,不会用到mimebase,而是直接使用它的继承类。mimemultipart有attach方法,而mimenonmultipart没有,只能被attach。
mime有很多种类型,这个略麻烦,如果附件是图片格式,我要用mimeimage,如果是音频,要用mimeaudio,如果是word、excel,我都不知道该用哪种mime类型了,得上google去查。
最懒的方法就是,不管什么类型的附件,都用mimeapplication,mimeapplication默认子类型是application/octet-stream。
application/octet-stream表明“这是个二进制的文件,希望你们那边知道怎么处理”,然后客户端,比如qq邮箱,收到这个声明后,会根据文件扩展名来猜测。
下面上代码。
假设当前目录下有foo.xlsx/foo.jpg/foo.pdf/foo.mp3这4个文件。
import smtplib from email.mime.multipart import mimemultipart from email.mime.text import mimetext from email.mime.application import mimeapplication _user = sigeken@qq.com _pwd = *** _to = 402363522@qq.com #如名字所示multipart就是分多个部分 msg = mimemultipart() msg[subject] = don't panic msg[from] = _user msg[to] = _to #---这是文字部分--- part = mimetext(乔装打扮,不择手段) msg.attach(part) #---这是附件部分--- #xlsx类型附件 part = mimeapplication(open('foo.xlsx','rb').read()) part.add_header('content-disposition', 'attachment', filename=foo.xlsx) msg.attach(part) #jpg类型附件 part = mimeapplication(open('foo.jpg','rb').read()) part.add_header('content-disposition', 'attachment', filename=foo.jpg) msg.attach(part) #pdf类型附件 part = mimeapplication(open('foo.pdf','rb').read()) part.add_header('content-disposition', 'attachment', filename=foo.pdf) msg.attach(part) #mp3类型附件 part = mimeapplication(open('foo.mp3','rb').read()) part.add_header('content-disposition', 'attachment', filename=foo.mp3) msg.attach(part) s = smtplib.smtp(smtp.qq.com, timeout=30)#连接smtp邮件服务器,端口默认是25 s.login(_user, _pwd)#登陆服务器 s.sendmail(_user, _to, msg.as_string())#发送邮件 s.close()
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product