Вопрос по c#, asp.net – Он также поддерживает файлы OFT

7

я есть следующий код в моем приемнике событий sharepoint, чтобы скопировать файл .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-файлу после его копирования и изменить его тему (по теме я имею в виду тему электронной почты) ??

Похоже, это уже решено, или у вас все еще есть проблемы? wp78de
Почему вы не уверены, что можете? Вы пробовали это? Каков был результат? mason
Посмотри на это:stackoverflow.com/questions/40038804/... squillman

Ваш Ответ

2   ответа
3

Вы можете использовать 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");

Для других пользователей, которые не могут найти Interop в Visual Studio, добавьте ссылку.

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

Обновить

Поскольку у меня нет SharePoint (или я когда-либо работал с ним), я не могу проверить это. Но может быть что-то подобное может работать? ИспользоватьUrl изSPListItem чтобы получить правильный файл. Вы также можете попробовать абсолютный URL, как показано вэта почта, Используйте эту строку, чтобы загрузить файл для редактирования.

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 loop .. and seocnd вопрос, как у моего файла шаблона уже есть Body, и я не хочу его изменять ... но я хочу только изменить тему, возможно ли это? john Gu
Я обновил свой ответ тем, что вы можете попробовать. Это не проверено, так как у меня нет SharePoint. И изменение тела не является обязательным, вы можете удалить это из моей первой части фрагмента, если вы не вносите в него изменения. VDWWD
Да, вам также нужно установить Office с Outlook на сервере. Вот почему я обычно не рекомендую Interop. VDWWD
сейчас внутри моей Visual Studio 2012 я не могу найти ссылку под названием «Библиотека объектов Microsoft Outlook 15.0» .. так что это то, что я могу установить внутри моего проекта VS? и я планирую развернуть свой код внутри IIS .. поэтому мне нужно будет установить Outlook на этом сервере (сервер sharepoint) ?? john Gu
так, что другой appraoch, чтобы сделать это? я имею в виду, если мне нужно изменить.oft Сюжет ,, тогда каковы другие более легкие подходы, которым я могу следовать, которые не требуют наличия офиса с установленным Outlook !!! john Gu
0

look, вы можете проверитьAspose.Email.

Aspose.Email для .NET - это полный набор API обработки электронной почты для использования с платформами .NET Framework, .NET Core и Xamarin, позволяющий создавать кроссплатформенные приложения, способные создавать, обрабатывать, преобразовывать и передавать электронную почту.без использования Microsoft Outlook

Он также поддерживает файлы OFT

Похожие вопросы