【问题标题】:Can i copy a .OFT file and change its Subject我可以复制 .OFT 文件并更改其主题吗
【发布时间】:2018-05-15 18:17:18
【问题描述】:

我的共享点事件接收器中有以下代码,用于在文档库中复制 .oft 文件并将其粘贴到新目标(另一个文档库)中:-

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;    
    }
}

byte[] fileBytes = templetefile.File.OpenBinary();
string destUrl = properties.Web.ServerRelativeUrl + "/" + projectid.RootFolder.Url +".oft";
SPFile destFile = projectid.RootFolder.Files.Add(destUrl, fileBytes, false);

现在我的代码运行良好。但我不确定我是否可以在复制 .OFT 文件后访问它,并修改其主题(主题是指我的电子邮件主题)??

【问题讨论】:

标签: c# asp.net


【解决方案1】:

您可以为此使用 Interop。

using Microsoft.Office.Interop.Outlook;

Microsoft.Office.Interop.Outlook.Application application = new Microsoft.Office.Interop.Outlook.Application();    
MailItem mail = application.CreateItemFromTemplate("oldfile.oft") as MailItem;

mail.BodyFormat = OlBodyFormat.olFormatHTML;
mail.Subject = "New Subject";
mail.HTMLBody = "<p>This is a new <strong>OFT</strong> file with a changed subject line.</p>";
mail.SaveAs("newfile.oft");

对于在 Visual Studio 中找不到 Interop 的其他用户,请添加参考。

References > Add Reference > COM > Microsoft Outlook 15.0 Object Library

更新

由于我没有 SharePoint(或曾经使用过它),我无法对此进行测试。但也许这样的事情可以工作?使用SPListItemUrl 获取正确的文件。您也可以尝试this post 中看到的绝对网址。使用该字符串加载文件进行编辑。

foreach (SPListItem i in template.Items)
{
    if (i.Name.ToLower().Contains("project"))
    {
        string url = i.Url;
        string absoluteUrl = (string)i[SPBuiltInFieldId.EncodedAbsUrl];

        MailItem mail = application.CreateItemFromTemplate(url) as MailItem;

        //or

        MailItem mail = application.CreateItemFromTemplate(absoluteUrl) as MailItem;
    }
}

【讨论】:

  • 感谢您的回复。但是在这行代码application.CreateItemFromTemplate("oldfile.oft") as MailItem 中,我如何引用已经存储在文档库中的文件,我在我的foreach 循环中获取了这个文件.. 并且seocnd 问题我的模板文件如何已经有一个 Body 和我不想修改它..但我只想修改主题这可能吗?
  • 我已经用您可以尝试的方法更新了我的答案。由于我没有 SharePoint,因此未对此进行测试。并且更改正文是可选的,如果您不对其进行更改,您可以从我的第一个 sn-p 部分中删除它。
  • 现在在我的 Visual Studio 2012 中,我找不到名为“Microsoft Outlook 15.0 对象库”的引用。所以这是我可以在我的 VS 项目中安装的东西吗?我打算在 IIS 中部署我的代码。所以我需要在该服务器(共享点服务器)上安装 Outlook 吗??
  • 是的,您还需要在服务器上安装带有 Outlook 的 Office。这就是为什么我通常不推荐 Interop。
  • 那么其他方法是什么?我的意思是,如果我需要修改.oft 主题,那么我可以遵循的其他更轻松的方法是什么,不需要安装 Outlook 的办公室!!!
【解决方案2】:

如果您想避免安装/使用 Outlook,可以查看Aspose.Email

Aspose.Email for .NET 是一套完整的电子邮件处理 API 与 .NET Framework、.NET Core 和 Xamarin 平台一起使用,使您能够 构建具有创建能力的跨平台应用程序, 在不使用 Microsoft 的情况下操作、转换和传输电子邮件 展望

它也支持 OFT 文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-20
    • 2014-05-11
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 2019-03-07
    • 2014-10-22
    相关资源
    最近更新 更多