Outlook VBA实现邮件自动转发的多收件人及自定义正文问题
Outlook 自动转发VBA代码优化方案
Sub AutoForwardAllSentItems(Item As Outlook.MailItem) ' -------------------------- 可配置参数 开始 -------------------------- ' 转发目标收件人列表,增删数组元素即可调整收件人数量 Const RECIPIENT_LIST As Variant = Array("xxx@xxx.com", "yyy@xxx.com", "zzz@xxx.com") ' 自定义正文前缀,{原邮件标题}会自动替换为对应内容,支持HTML格式 Const CUSTOM_BODY_PREFIX As String = "<p>Hi,您发送的主题为【{原邮件标题}】的邮件已被接收,感谢您的来信!</p><hr>" ' -------------------------- 可配置参数 结束 -------------------------- Dim myFwd As Outlook.MailItem Dim recipient As Variant Dim customBody As String Set myFwd = Item.Forward ' 添加所有目标收件人 For Each recipient In RECIPIENT_LIST myFwd.Recipients.Add CStr(recipient) Next ' 校验所有收件人地址有效性 If Not myFwd.Recipients.ResolveAll Then MsgBox "存在无效收件人地址,转发终止", vbExclamation Exit Sub End If ' 拼接自定义正文+原邮件内容 customBody = Replace(CUSTOM_BODY_PREFIX, "{原邮件标题}", Item.Subject) myFwd.HTMLBody = customBody & myFwd.HTMLBody ' 发送邮件 myFwd.Send ' 释放对象 Set myFwd = Nothing End Sub
优化说明
- 多收件人支持:将收件人配置为数组,无需处理逗号/分号分隔格式问题,增删数组元素即可调整收件人数量,新增收件人有效性校验逻辑,避免无效地址导致发送失败
- 自定义正文支持:将自定义正文设为可配置参数,支持插入原邮件标题变量,修复了原代码中
.HTMLBody缺少调用对象的语法错误,保留原邮件完整内容和格式
使用说明
- 替换
RECIPIENT_LIST数组内的邮箱地址为实际需要的转发目标地址 - 调整
CUSTOM_BODY_PREFIX内的自定义正文内容,可自行添加HTML标签调整字体、颜色、排版样式 - 部署完成后重启Outlook或重新加载宏即可生效,需确认Outlook宏安全配置允许运行该脚本
内容的提问来源于stack exchange,提问作者TS Pham
相关产品推荐
相关产品推荐

