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

微软禁用SMTP auth后,如何用Python通过Outlook发送邮件?

符合Outlook新安全要求的SMTP替代方案:Microsoft Graph API

微软已对个人免费版Outlook禁用SMTP AUTH,推荐使用Microsoft Graph API发送邮件——这是微软官方支持的现代认证方案,基于OAuth2.0,完全符合新安全规范。

实现步骤

1. 注册Azure AD应用(个人账户可操作)

  • 登录Azure门户,创建「应用注册」:
    • 名称自定义,支持的账户类型选择「任何组织目录中的账户和个人Microsoft账户」
    • 重定向URI填写 http://localhost
  • 生成客户端密钥:进入应用的「证书和密码」页面,新建客户端密码,保存生成的密钥值(仅显示一次)
  • 添加API权限:进入「API权限」页面,添加Microsoft Graph的Mail.Send委托权限,点击「授予管理员同意」(个人账户自身即可完成此操作)

2. Python代码实现

使用requests库完成OAuth2认证并调用Graph API发送邮件:

先安装依赖:

pip install requests

示例代码:

import requests

# 配置参数
CLIENT_ID = "你的客户端ID"
CLIENT_SECRET = "你的客户端密钥"
TENANT_ID = "common"  # 个人账户固定用common
USER_EMAIL = "你的Outlook邮箱地址"
RECIPIENT_EMAIL = "收件人邮箱地址"

# 获取访问令牌
token_url = f"https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/token"
token_payload = {
    "client_id": CLIENT_ID,
    "client_secret": CLIENT_SECRET,
    "scope": "https://graph.microsoft.com/.default",
    "grant_type": "client_credentials"
}
token_response = requests.post(token_url, data=token_payload)
access_token = token_response.json().get("access_token")

if not access_token:
    print("获取令牌失败")
    exit()

# 发送邮件
send_mail_url = f"https://graph.microsoft.com/v1.0/users/{USER_EMAIL}/sendMail"
mail_headers = {
    "Authorization": f"Bearer {access_token}",
    "Content-Type": "application/json"
}
mail_payload = {
    "message": {
        "subject": "测试邮件",
        "body": {
            "contentType": "Text",
            "content": "这是通过Microsoft Graph API发送的测试邮件"
        },
        "toRecipients": [
            {
                "emailAddress": {
                    "address": RECIPIENT_EMAIL
                }
            }
        ]
    },
    "saveToSentItems": True
}

mail_response = requests.post(send_mail_url, headers=mail_headers, json=mail_payload)
if mail_response.status_code == 202:
    print("邮件发送成功")
else:
    print(f"发送失败,错误信息:{mail_response.json()}")

补充说明

  • 上述代码使用客户端凭据流认证,适合后台脚本类无交互场景
  • 若需用户交互式认证(如桌面应用),可改用授权码流,需调整认证逻辑
  • 务必确保应用权限配置正确,否则会触发权限不足报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 08:08:22