Python使用smtplib发送邮件踩过的坑
smtplib发送邮件的坑
本文为博主原创,未经许可严禁转载。
本文链接:https://blog.csdn.net/zyooooxie/article/details/111476470
最近用smtplib写了发送邮件的脚本,因为网上教程一大堆,我就只说下我遇到的坑;
这是我写的 python脚本的category ,有兴趣 可以看看;
个人博客:https://blog.csdn.net/zyooooxie
报错 please run connect() first

我这个情况和别人不太一样 SMTPServerDisconnected(‘please run connect() first’,)
我当时遇到这个问题时 【我能成功发邮件,但是报错:please run connect() first 】;因为不懂(代码都是CTRL + C来的),就直接在网上搜答案,但网友的答案 好像都不对症;
我就问了我公司的导师,她指点 可能是发送邮件的代码执行了,它后面的代码出错了吧 ,我才反应过来;
顺利找到了我的问题所在: 【之前代码是 smtp.close() + smtp.quit() 都有】
改后:

看下 源代码,
def close(self):
"""Close the connection to the SMTP server."""
try:
file = self.file
self.file = None
if file:
file.close()
finally:
sock = self.sock
self.sock = None
if sock:
sock.close()
def quit(self):
"""Terminate the SMTP session."""
res = self.docmd("quit")
# A new EHLO is required after reconnecting with connect()
self.ehlo_resp = self.helo_resp = None
self.esmtp_features = {}
self.does_esmtp = False
self.close()
return res
对比下 官方文档的介绍 smtplib —SMTP协议客户端
close() 是关闭SMTP服务器连接;quit()是结束整个SMTP会话;
我这报错是:我先close() 关闭了,又quit();已经关闭连接,还想关闭呢???
就明白 quit() 比起close() 更实用。
Gmail 不支持 包含可执行文件类型的 zip附件
看下我的接收人: 【我现在的公司邮箱是 Gmail企业邮箱】
在我调试代码过程中,跑 发送纯文本格式邮件的方法email_send_text() 、发送HTML格式邮件的方法email_send_html() ,是没啥问题的;
我又写了个 发送 纯文本、HTML、附件的方法 email_send_text_html_file(),【附件为excel文件 :测试用例 +jpg文件:bug截图】也没啥问题;我想着,那就把测试报告也加入附件呗,
因为我用的pytest,有2种生成测试报告:
- pytest-html 把Html文件做附件没啥问题;
- allure 这一大堆 乱七八糟的,不如压缩下,搞个zip文件吧;
然后就收不到邮件了。。。
百思不得其解,我还以为我发了四、五十封邮件,公司把我这个sender拉黑了;
感觉好像又有点 大材小用啊,我这小鸡 用得着 牛刀?
1小时后 我就随便看了下我的网易邮箱(还被逼着 装了App),咦,这么多未读邮件?



说一句: 我在压缩的同时,顺便给它加了个密;
后续我又试验了【不加密】:
失败【压缩文件 为allure的文件夹】 可能是 有可执行文件的原因;

成功【压缩文件 为图片】
交流技术 欢迎+QQ 153132336 zy
个人博客 https://blog.csdn.net/zyooooxie
更多推荐


所有评论(0)