You need to enable JavaScript to run this app. 如何通过C#使用Exchange Service加载.oft模板发送邮件
优惠活动
大模型
产品
解决方案
定价
更多

如何通过C#使用Exchange Service加载.oft模板发送邮件

核心实现结论

完全可以加载 .oft 格式的邮件模板完成发送,不需要在代码里硬编码完整邮件正文,适配你当前已连接的 Exchange 2013 服务环境。

具体实现流程

  • 替换原有直接初始化空 EmailMessage 的逻辑,先读取本地存储的 .oft 模板文件:
// 读取本地oft模板的二进制内容
byte[] templateBytes = File.ReadAllBytes(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "confirm_reply_template.oft"));
  • 将模板内容加载到邮件对象的MIME属性中,替代空邮件初始化的步骤:
// 复用你已连接完成的exchangeService实例
var email = new EmailMessage(exchangeService);
// 加载oft模板的完整内容(包含原有正文、样式、默认主题等配置)
email.MimeContent.Load(templateBytes);
  • 补充自定义属性逻辑:
    • 加载完成后直接复用原有代码添加收件人:email.ToRecipients.AddRange(recipients);
    • 针对你提到的模板关键词插入日期的需求,直接读取当前邮件的HTML/纯文本正文,替换提前约定好的占位符即可(比如将[邮件接收日期]替换成实际的收到邮件的时间值),不需要重写完整正文结构
  • 最后直接复用你原有的发送逻辑完成发送,不需要改动:
email.SendAndSaveCopy(sentItemsFolderId);

实操注意事项

  • 模板加载完成后不要重新创建新的 EmailMessage 实例,否则之前加载的模板内容会被清空,所有自定义修改操作都要在加载完模板的同一个邮件对象上完成
  • 如果程序部署在服务器上,要给程序运行账号开放模板文件的读取权限,避免出现文件访问拒绝的问题
  • 加载模板后记得先清空模板自带的默认收件人列表,再添加实际需要发送的目标收件人,避免出现错发、多收件人的问题
  • 设计模板占位符时,尽量将占位符放在纯文本展示区域,不要嵌入到HTML样式标签的内部,避免替换时因为HTML结构切割导致占位符匹配失效
  • 模板本身设置好的默认样式、签名、主题前缀等内容会自动保留,不需要在代码里重复配置

内容的提问来源于stack exchange,提问作者Pascal Burkard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 00:15:08