Outlook Add-in:Mailitem转发多收件人触发「名称未识别」异常
问题解决:Outlook Add-in转发邮件多个收件人报错「One or more names are not recognized」
问题分析
Recipients.Add()方法并不支持一次性传入多个用分隔符拼接的收件人地址字符串——即便这些地址在新建邮件场景下可正常使用。Outlook对象模型中该方法的设计逻辑是单个添加收件人,批量传入的地址字符串无法被正确解析,因此抛出名称未识别的异常。
解决方案
不要一次性传入多地址字符串,改为逐个调用Recipients.Add()添加每个收件人,或拆分地址列表后循环添加。
修正后的代码示例
var newItem = mailItem.Forward(); // 逐个添加收件人 newItem.Recipients.Add("XXX@domen1.com"); newItem.Recipients.Add("YYY@domen1.com"); // 批量场景推荐:用列表循环添加 var recipients = new List<string> { "XXX@domen1.com", "YYY@domen1.com" }; foreach (var addr in recipients) { newItem.Recipients.Add(addr); } newItem.Send();
补充验证方案
若需确保所有收件人地址可被正确解析,可在添加后调用Recipients.ResolveAll()方法,提前排查无效地址:
if (newItem.Recipients.ResolveAll()) { newItem.Send(); } else { // 处理解析失败的收件人 foreach (Outlook.Recipient recip in newItem.Recipients) { if (!recip.Resolved) { Console.WriteLine($"未识别的地址:{recip.Name}"); } } }
内容的提问来源于stack exchange,提问作者Sturmer
相关产品推荐
相关产品推荐

