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

使用Python的Win32Com操作Outlook时如何获取收件人邮箱地址

问题原因

msg.Recipients属于Outlook COM接口的收件人集合对象,不是可直接打印的字符串类型,因此直接输出会显示<COMObject <unknown>>;而msg.To仅返回拼接后的收件人显示名称,不包含邮箱地址信息。

解决方案

遍历Recipients集合中的单个收件人对象,读取地址属性即可:

基础版(适用大多数场景)

# 遍历所有收件人
for rec in msg.Recipients:
    # 输出收件人邮箱地址
    print(rec.Address)
    # 可选:判断收件人类型,1=收件人、2=抄送、3=密送
    print(f"类型:{rec.Type},地址:{rec.Address}")

兼容Exchange环境版

如果是企业内部Exchange邮箱,直接读取Address可能返回EX:开头的内部地址,可通过以下方法获取标准SMTP邮箱地址:

def get_smtp_addr(recipient):
    raw_addr = recipient.Address
    # 已经是标准SMTP地址直接返回
    if raw_addr.startswith("SMTP:"):
        return raw_addr[5:]
    # 处理Exchange内部地址
    if raw_addr.startswith("EX:"):
        exchange_user = recipient.AddressEntry.GetExchangeUser()
        if exchange_user:
            return exchange_user.PrimarySmtpAddress
    return raw_addr

# 调用示例
for rec in msg.Recipients:
    print(get_smtp_addr(rec))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:27:04