You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用Python通过win32发送邮件时的Outlook安全弹窗

解决Python win32库发邮件时的安全弹窗问题

这个弹窗是Outlook的安全防护机制,用来阻止未授权程序自动发送邮件,下面给几个实用的解决办法:

方法一:调整Outlook信任中心设置

直接修改Outlook的安全配置,允许自动化程序访问:

  • 打开Outlook,依次点击「文件」→「选项」→「信任中心」→「信任中心设置」
  • 找到「程序访问」选项,勾选「从不警告我有关可疑活动(不推荐)」;如果有针对特定程序的信任设置,也可以把你的Python解释器加入信任列表
  • 注意:这个操作会降低Outlook的安全防护,只在你完全信任自己的自动化脚本时使用

方法二:用Redemption库绕过安全限制

Redemption是专门解决Outlook自动化安全弹窗的第三方库,很多开发者都在用:

  1. 先安装库:
pip install redemption
  1. 替换原来的win32com代码,用Redemption发邮件的示例:
import redemption

# 初始化会话并登录当前Outlook账户
session = redemption.RDOSession()
session.Logon()

# 创建邮件
msg = session.CreateMessageFromMsgFile()
msg.To = "收件人邮箱@example.com"
msg.Subject = "自动化测试邮件"
msg.Body = "这是通过Redemption发送的邮件,不会弹安全提示"

# 发送邮件
msg.Send()
session.Logoff()

Redemption通过模拟底层MAPI会话绕过Outlook的安全检测,稳定性比直接用win32com好很多。

方法三:改用SMTP直接发送邮件

彻底绕开Outlook客户端,用SMTP协议直接连接邮箱服务器发邮件,这是最稳妥的方案:

import smtplib
from email.mime.text import MIMEText

# 配置邮箱SMTP信息(以QQ邮箱为例)
smtp_server = "smtp.qq.com"
smtp_port = 587
sender_email = "你的QQ邮箱@qq.com"
# QQ邮箱需要用「授权码」替代密码,在邮箱设置里开启SMTP后获取
sender_password = "你的邮箱授权码"
recipient_email = "收件人邮箱@example.com"

# 构造邮件内容
msg = MIMEText("自动化发送的邮件内容", "plain", "utf-8")
msg["Subject"] = "SMTP测试邮件"
msg["From"] = sender_email
msg["To"] = recipient_email

# 连接服务器发送邮件
with smtplib.SMTP(smtp_server, smtp_port) as server:
    server.starttls()  # 开启加密传输
    server.login(sender_email, sender_password)
    server.send_message(msg)

需要先在你的邮箱设置里开启SMTP服务,不同邮箱的配置略有差异,比如Gmail需要启用两步验证后生成应用专用密码。

内容的提问来源于stack exchange,提问作者nathoe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:10:40