如何复制.OFT文件并修改主题?SharePoint事件接收器代码求助
复制.OFT文件并修改主题的实现方案
当然可以实现这个需求!.OFT本质是Outlook的邮件模板文件,它的主题信息存储在邮件的MIME头部分,我们可以通过解析文件内容、修改主题再重新生成二进制流的方式完成操作。结合你已有的SharePoint事件接收器代码,我整理了完整的实现步骤:
一、核心思路
- 从源文档库读取.OFT文件的二进制内容
- 将二进制内容解析为可编辑的邮件对象(
MailMessage) - 修改邮件对象的
Subject属性(即主题) - 将修改后的邮件对象重新转换为字节数组
- 将新的字节数组保存到目标文档库
二、完整代码实现(结合你的现有代码)
首先确保引用必要的命名空间:
using System.IO; using System.Net.Mail; using Microsoft.SharePoint;
然后在你已有的代码基础上,补充修改和保存的逻辑:
// 你已有的代码部分 SPDocumentLibrary template = (SPDocumentLibrary)properties.Web.GetList(properties.Web.ServerRelativeUrl + "/Templates/"); SPListItem templetefile = null; foreach (SPListItem i in template.Items) { if (i.Name.ToLower().Contains("project")) { templetefile = i; break; // 找到第一个匹配文件就退出循环,提升效率 } } if (templetefile != null) { byte[] fileBytes = templetefile.File.OpenBinary(); // 解析OFT文件为MailMessage MailMessage mailMsg = null; using (MemoryStream ms = new MemoryStream(fileBytes)) { mailMsg = MailMessage.CreateFromStream(ms); } // 修改主题,这里替换成你需要的内容 mailMsg.Subject = "更新后的项目模板主题 - " + DateTime.Now.ToString("yyyyMMdd"); // 将修改后的MailMessage转换回字节数组 byte[] modifiedBytes = null; using (MemoryStream ms = new MemoryStream()) { mailMsg.Save(ms); modifiedBytes = ms.ToArray(); } // 保存到目标文档库(假设目标库路径为"/TargetLibrary/") string destLibraryUrl = properties.Web.ServerRelativeUrl + "/TargetLibrary/"; SPDocumentLibrary destLibrary = (SPDocumentLibrary)properties.Web.GetList(destLibraryUrl); // 定义目标文件名,添加前缀避免重复 string destFileName = $"Modified_{templetefile.Name}"; // 检查目标文件是否存在,存在则覆盖,不存在则新增 SPFile existingFile = destLibrary.RootFolder.Files.GetFile(destFileName); if (existingFile != null) { existingFile.SaveBinary(modifiedBytes); } else { destLibrary.RootFolder.Files.Add(destFileName, modifiedBytes, true); } }
三、注意事项
- 权限问题:确保事件接收器的运行账号有足够权限读取源库文件和写入目标库
- 异常处理:建议添加
try-catch块,处理文件解析、保存过程中可能出现的异常(比如损坏的OFT文件) - 兼容性:
MailMessage.CreateFromStream对部分复杂OFT模板可能存在解析问题,若遇到这种情况,可以考虑使用更专业的MIME处理库(如MimeKit),但需确保SharePoint环境支持部署第三方库 - 文件名唯一性:示例中通过添加前缀保证文件名唯一,你可以根据实际需求调整命名规则
内容的提问来源于stack exchange,提问作者John John
相关产品推荐
相关产品推荐

