Python收发邮件时如何避免Windows弹出打开方式选择提示窗口
问题解决:Python读取邮件触发Windows打开方式弹窗/自动新开浏览器标签页
问题根源
你的readMail函数内置了HTML邮件自动打开逻辑:只要检测到邮件内容类型为text/html,就会自动生成本地index.html文件,调用webbrowser.open(filepath)触发系统默认程序打开该文件,这是弹窗和自动新开标签页的核心原因。
同时你在writeMail发信逻辑中,哪怕html变量为空值,也附加了空的text/html类型邮件部分,导致所有自己发出的邮件都会触发上述读取逻辑。
解决方案
方案1:彻底删除自动打开逻辑(推荐,直接杜绝弹窗)
直接注释或删除readMail中的如下代码块即可:
if content_type == "text/html": # if it's HTML, create a new HTML file and open it in browser folder_name = mail.clean(subject) if not os.path.isdir(folder_name): # make a folder for this email (named after the subject) os.mkdir(folder_name) filename = "index.html" filepath = os.path.join(folder_name, filename) # write the file open(filepath, "w").write(body) # open in the default browser webbrowser.open(filepath)
如果仅需要保留HTML文件本地存储功能、不需要自动打开,只删除最后一行webbrowser.open(filepath)即可。
方案2:优化发信逻辑,避免冗余HTML部分
你当前发的邮件仅需要传输纯文本数据,不需要HTML部分,修改writeMail中的代码,删除冗余的HTML附件逻辑:
# 仅保留纯文本部分即可,删除原有HTML相关代码 text = str(data) part1 = MIMEText(text, "plain") message.attach(part1)
修改后你发出的邮件不会再携带text/html类型内容,读取时也就不会触发自动打开逻辑。
内容的提问来源于stack exchange,提问作者Simon Champney
相关产品推荐
相关产品推荐

