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

如何使用Python通过网页版Outlook发送邮件?

使用Python通过网页版Outlook发送邮件的可行方案

方法1:Microsoft Graph API(官方推荐)

网页版Outlook依托微软365云服务,通过Microsoft Graph API是最稳定可靠的官方方案,步骤如下:

  1. 在Azure Active Directory中注册应用,获取客户端ID、租户ID,并配置Mail.Send的API权限
  2. 安装依赖库:
pip install azure-identity msgraph-sdk
  1. 示例代码(用户名密码流程,适合脚本场景):
from azure.identity import UsernamePasswordCredential
from msgraph import GraphServiceClient

# 替换为你的配置参数
CLIENT_ID = "你的客户端ID"
TENANT_ID = "你的租户ID"
USERNAME = "你的Outlook邮箱账号"
PASSWORD = "你的邮箱密码"

# 初始化认证凭据与Graph客户端
credential = UsernamePasswordCredential(CLIENT_ID, USERNAME, PASSWORD, tenant_id=TENANT_ID)
client = GraphServiceClient(credential)

# 构造邮件内容
message = {
    "subject": "测试邮件",
    "body": {
        "contentType": "Text",
        "content": "这是通过Python调用Graph API发送的网页版Outlook邮件"
    },
    "toRecipients": [
        {
            "emailAddress": {
                "address": "收件人邮箱@xxx.com"
            }
        }
    ]
}

# 发送邮件并保存到已发送
client.me.send_mail.post(body={"message": message, "saveToSentItems": True})

注意:用户名密码流程受微软安全策略限制,若认证失败,需确保账号开启现代认证且未启用MFA;若需MFA支持,可改用DeviceCodeCredential等凭据类型

方法2:Selenium模拟网页操作(仅临时测试用)

如果不想配置API,可通过Selenium模拟浏览器登录网页版Outlook发送邮件,但该方法稳定性差,易触发安全验证,步骤如下:

  1. 安装依赖:
pip install selenium
  1. 示例代码(Chrome浏览器):
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

# 初始化浏览器
driver = webdriver.Chrome()
driver.get("https://outlook.office.com/mail/")

# 登录(需手动处理验证码或MFA,或提前保存登录状态)
driver.find_element(By.ID, "i0116").send_keys("你的邮箱账号")
driver.find_element(By.ID, "idSIButton9").click()
time.sleep(2)
driver.find_element(By.ID, "i0118").send_keys("你的邮箱密码")
driver.find_element(By.ID, "idSIButton9").click()
time.sleep(5)

# 新建并发送邮件
driver.find_element(By.XPATH, "//button[contains(text(), '新建邮件')]").click()
time.sleep(2)
driver.find_element(By.XPATH, "//input[@aria-label='收件人']").send_keys("收件人邮箱@xxx.com")
driver.find_element(By.XPATH, "//input[@aria-label='添加主题']").send_keys("测试邮件")
driver.find_element(By.XPATH, "//div[@role='textbox']").send_keys("这是Selenium模拟发送的网页版Outlook邮件")
driver.find_element(By.XPATH, "//button[contains(text(), '发送')]").click()

time.sleep(3)
driver.quit()

提示:Outlook网页版更新后元素定位可能失效,该方法仅适合临时测试,不建议用于生产环境

内容的提问来源于stack exchange,提问作者Ксения Митуля

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:06:22