700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 使用Python的smtplib模块发送带附件的邮件

使用Python的smtplib模块发送带附件的邮件

时间:2024-02-07 11:19:48

相关推荐

使用Python的smtplib模块发送带附件的邮件

上一篇文章《使用Python的smtplib模块发送简单邮件》介绍了调用smtplib模块发送包含简单内容的邮件,本文继续学习参考文献1中的发送带附件的邮件的示例代码,同时由于参考文献1中的带附件邮件中并没有邮件附件,而仅仅是邮件内容中关联的内嵌资源附件,本文结合参考文献2,实现发送带附件的电子邮件,代码主要参照参考文献1-2,里面有部分内容也不是太明白,只是记录测试过程及个人理解。

参考文献1中提供的发送带附件的邮件的示例代码及其程序运行效果如下所示,除了之前文章中用到的发送邮件所需的类及函数之外,代码中用到的类及函数的说明如下所示:

# coding=utf-8import smtplibfrom email.mime.text import MIMETextfrom email.mime.image import MIMEImagefrom email.mime.multipart import MIMEMultipartsender='XXXXXXXX@'password='XXXXXXXX'to='XXXXXXXX@'def mail():ret=Truetry:msg=MIMEMultipart('related')msg['From']=sendermsg['To']=tomsg['Subject']='通过SMTP协议发送带附件邮件测试'msgAlternative=MIMEMultipart('alternative')msg.attach(msgAlternative)mail_msg="""<p>邮件测试</p><p><a ref="">百度搜索</a></p><p>图片演示:</p><p><img src="cid:image1"></p>"""msgAlternative.attach(MIMEText(mail_msg,'html','utf-8'))fp=open('test.jpg','rb')msgImage=MIMEImage(fp.read())fp.close()msgImage.add_header('Content-ID','<image1>')msg.attach(msgImage)server=smtplib.SMTP('')server.login(sender,password)server.sendmail(sender,to,msg.as_string())print(msg.as_string())server.quit()except Exception as e:ret=Falseprint(e)return ret if mail():print('邮件发送成功')else:print('邮件发送失败')

上述程序代码中所用的图片只是作为内嵌资源用于在邮件主体内容中调用,并非是发邮件时附带的、可以下载的附件。为在邮件中增加附件,基于参考文献2中的代码,将其中夹带附件的代码内嵌到参考文献1的示例代码之中,主要增加的内容如下。:

att = MIMEBase("application", "octet-stream")att.set_payload(open('test.jpg', "rb").read())att1.add_header("Content-Disposition", "attachment", filename=Header("test.jpg", "utf-8").encode())encoders.encode_base64(att)msg.attach(att)

再调用发送邮件程序,即可将图片作为邮件附件一并发送,程序执行效果如下图所示:

参考文献:

[1]Python从菜鸟到高手

[2]/weixin_51424938/article/details/113795373

[3]/Winnycatty/article/details/84548381

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。