Sharepoint与Office 365的在线电子邮件集成

时间:2016-04-08 08:23:21

标签: c# sharepoint workflow office365

我目前正在尝试查找有关如何在Outlook网络应用中打开存储在Sharepoint Online中的电子邮件的选项。这意味着我已从Outlook拖动电子邮件并拖入SharePoint在线文档库。但是,我想通过SP在线回复电子邮件,只需单击该项目(然后在Outlook Web应用程序中打开)。

如果没有提供开箱即用,有没有办法为它创建一个应用程序,例如通过使用Outlook Web API实现此功能?

1 个答案:

答案 0 :(得分:1)

当您以* .msg文件格式保存电子邮件并将文件上传到SharePoint Online时,它无法在Outlook Web App(OWA)中打开,因为OWA不了解* .msg文件格式(丰富的文件格式)。您可以下载该文件并使用Outlook客户端打开。

如果您想创建一个应用程序来完成它。在c#中,您可以使用以下步骤使用SharePoint Client dll:

1.向SharePoint发送一个请求,传递由用户名和密码创建的Credential对象:

public class serviceBean {

@PersistenceContext(unitName = "myPC")
EntityManager em; //not null

public insert(entity en) {
     em.merge(en)
}

public class demoLog extends EmptyInterceptor {

public void doSave(){
     MyUtil.logIt(entityLog);
}
}

public class MyUtil {

@PersistenceContext(unitName = "myPC")
EntityManager em; // got null here

public static void logIt(EntityLog entity) {
     em.merge(entity);
}
}

2.提供文件URL以从.msg文件中读取数据:

 ClientContext context = new ClientContext(SiteUrl);
 context.Credentials = new SharePointOnlineCredentials(UserName, Password);

3。您可以使用FileStream对象下载.msg文件(单击here下载整个演示)。之后,您可以use c# to read information from the file然后通过System.Net.Mail.MailMessage发送电子邮件:

public Stream GetFile() 
    { 
        using (ClientContext clientContext = GetContextObject()) 
        { 

            Web web = clientContext.Web; 
            clientContext.Load(web, website => website.ServerRelativeUrl); 
            clientContext.ExecuteQuery(); 
            Regex regex = new Regex(SiteUrl, RegexOptions.IgnoreCase); 
            string strSiteRelavtiveURL = regex.Replace(FileUrl, string.Empty); 
            string strServerRelativeURL = CombineUrl(web.ServerRelativeUrl, strSiteRelavtiveURL); 

            Microsoft.SharePoint.Client.File oFile = web.GetFileByServerRelativeUrl(strServerRelativeURL); 
            clientContext.Load(oFile); 
            ClientResult<Stream> stream = oFile.OpenBinaryStream(); 
            clientContext.ExecuteQuery(); 
            return this.ReadFully(stream.Value); 
        } 
    }