Microsoft.Office.Interop.Outlook.MailItem添加多余HTML span标签求助
解决Outlook Interop自动添加白色Span导致文本不可见的问题
哈哈,这个坑我之前踩过!你现在遇到的问题根源很简单:你用错了MailItem的属性。MailItem.Body是专门用来处理纯文本内容的,当你把HTML字符串硬塞进去时,Outlook的自动格式化机制会乱搞,就会出现这种莫名其妙添加<span style='color:white'>的情况,直接把文字藏起来了。
正确的解决方法
直接把你的HTML内容赋值给MailItem.HTMLBody属性,而不是Body。这个属性就是专门为HTML格式邮件设计的,不会触发那些奇怪的自动格式转换。
修改后的代码示例
// 保持你的HTML构建逻辑不变(建议用字符串插值更简洁) string body = "<p>For your information, the individuals below were recently reassigned:</p><ul>"; foreach (string n in reassigned) body += $"<li>{n}</li>"; body += "</ul>"; // 关键替换:用HTMLBody代替Body mailItem.HTMLBody = body;
额外的小建议
- 避免手动拼接HTML:如果你的
reassigned列表里有特殊字符(比如<、>或者引号),直接拼接会导致HTML格式错误。可以用StringBuilder来构建,或者用HttpUtility.HtmlEncode对每个名字进行转义:StringBuilder bodyBuilder = new StringBuilder(); bodyBuilder.Append("<p>For your information, the individuals below were recently reassigned:</p><ul>"); foreach (string n in reassigned) bodyBuilder.Append($"<li>{HttpUtility.HtmlEncode(n)}</li>"); bodyBuilder.Append("</ul>"); mailItem.HTMLBody = bodyBuilder.ToString(); - 同时支持纯文本和HTML:如果需要兼容不支持HTML的邮件客户端,可以同时设置
Body(纯文本版本)和HTMLBody(HTML版本),Outlook会自动根据收件人的设置显示对应的内容。
内容的提问来源于stack exchange,提问作者rka
相关产品推荐
相关产品推荐

