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

如何使用Python的win32com.client模块向多个收件人或群组发送Outlook邮件

基于win32com.client调用Outlook发送多收件人/群组邮件的实现方案

核心实现逻辑

  • 多独立收件人实现:To/CC/BCC属性支持传入分号分隔的多个邮箱地址,也可以通过Recipients.Add()方法逐个添加收件人,后者兼容性更强,不会出现分隔符识别异常。
  • Outlook通讯组(群组)实现:直接传入群组在Outlook地址簿中的准确显示名即可,Outlook会自动解析群组内的所有成员,不需要手动拆解群组地址。

可运行的完整实现代码

import win32com.client

olMailItem = 0x0
obj = win32com.client.Dispatch("Outlook.Application")
newMail = obj.CreateItem(olMailItem)

# 邮件基础配置
newMail.Subject = "测试多收件人/群组邮件"
newMail.Body = "这是邮件正文内容\n第二行正文"

# 方式1:直接用分号拼接多收件人,支持同时填邮箱和群组名
# newMail.To = "user1@example.com;user2@example.com;产品部全员群组"
# newMail.CC = "user3@example.com;部门领导群组"

# 方式2:通过Recipients接口添加,更稳妥,支持校验地址有效性
recipients = newMail.Recipients
# 添加普通收件人
recipients.Add("user1@example.com")
recipients.Add("user2@example.com")
# 添加Outlook通讯组(直接填群组的显示名即可)
recipients.Add("产品部全员群组")
# 统一解析所有收件人地址,确认有效
all_valid = recipients.ResolveAll()
if not all_valid:
    # 可自行添加无效收件人的处理逻辑
    print("存在无法识别的收件人/群组,请检查名称是否和Outlook地址簿一致")

# 附件添加逻辑和原有实现一致
# attachment1 = "C:/test/附件.xlsx"
# newMail.Attachments.Add(attachment1)

# 预览邮件或直接发送
# newMail.Display()
newMail.Send()

注意事项

  • 运行代码前确保Outlook客户端处于正常登录状态,且对应账号有权限访问你要发送的群组地址簿
  • 群组名必须和Outlook地址簿中显示的名称完全一致,否则会出现解析失败的问题
  • 如果使用分号拼接的方式填写收件人,注意不要在分号前后加多余的全角空格,避免地址识别错误
  • 该方案仅依赖本地Outlook客户端,不需要额外调用SMTP接口,完全符合业务限定要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:36:03