如何将Outlook Web App嵌入到我的网站中?

9

我希望在我的网站中嵌入Outlook Web App,直接显示日历、邮件和联系人屏幕。我尝试使用iFrame来实现,但被禁止了。这种做法是否可行?


你有看到这个Outlook集成吗? - huMpty duMpty
我想表达的不是那个意思。我不想从头开始实现 Outlook 门户。我只想在我的网站页面上显示默认的 Outlook Web 应用程序。 - ant
2个回答

2
与普遍的看法相反,这是可以实现的。
我的博客文章(http://blog.degree.no/2013/06/owa-in-iframe-yes-its-possible/)中有更多细节,但这里需要的代码。如果在“轻量模式”下运行(flag = 1),则问题较少,并且可以跨域工作,但如果在同一域内运行(例如,在yourdomain.com上运行的网站和在mail.yourdomain.com上运行的交换服务器),则在“完全模式”下(flag = 0)也可以正常工作。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>

<script>
    function LoginToOWA(server, domain, username, password) {


        var url = "https://" + server + "/owa/auth/owaauth.dll";
        // flags 0 = full version, flags 1 = light weight mode
        var p = { destination: 'https://' + server + '/exchange', flags: '1', forcedownlevel: '0', trusted: '0', isutf8: '1', username: domain + '\\' + username, password: password };


        var myForm = document.createElement("form");
        myForm.method = "post";
        myForm.action = url;

        for (var k in p) {

            var myInput = document.createElement("input");
            myInput.setAttribute("name", k);
            myInput.setAttribute("value", p[k]);
            myForm.appendChild(myInput);
        }


        document.body.appendChild(myForm);
        myForm.submit();
        document.body.removeChild(myForm);
    }
</script>


<body onload="javascript:LoginToOWA('mail.someserver.com','yourdomain','yourusername@someserver.com','yourpassword');">
    <img src="../../gfx/loadingAnim.gif" /> Please wait while your inbox is loading... 
</body>
</html>

我尝试去做那件事,但是从服务器返回了404(未找到)错误。 - ant
你的 OWA 网址是什么?你已经把虚拟设置("mail.someserver.com", "yourdomain"等)换成自己的了,显然吧? :) - Andreas
是的,我使用了我的电子邮件设置。 - ant
听起来生成的 URL 指向您的邮件服务器不正确。调试脚本,找出实际输出是什么。当您输入“https://mail.yourserver.com/owa”时,您能否获得 OWA 登录? - Andreas
我正在研究同样的主题 - 是否可能将Office 365 Outlook嵌入第三方Web应用程序中。我收到错误提示,指出这是不可能的。上面帖子中的链接无法使用。从上面的讨论中,我不明白为什么URL会不同。它是标准的URL- http://outlook.office365.com。我有什么遗漏吗? - Andy Dufresne

0
你使用的 OWA 版本是哪个?我之前为我们公司的内部网站在 OWA-2003 上完成了这个。只需将 iframe 指向 WebPart URL,就像这样:
http://server/exchange/user/inbox/?cmd=contents&view=Two-Line%20View&theme=4

这只适用于您的主网站使用Windows集成身份验证。您必须使用ASP.Net服务器端代码将“user”替换为已登录的用户名。

搜索MS KB文章以获取WebPart参数。您可以显示收件箱、日历等。


我只是想使用这个HTML代码:<iframe src="https://pod51050.outlook.com/owa/" width="1024" height="800"></iframe> - ant
你能否添加这些微软知识库文章的链接? - ant
好的。这很有帮助。我看到这个链接是用于身份验证的login.live.com。login.live.com网站实现了HTTP头X-Frame-Options设置为“deny”。你无能为力,也不应该做任何事情。 - Abhitalks
@Abhitalks - 我正在研究同样的话题 - 是否可以将Office 365 Outlook嵌入第三方Web应用程序中。我遇到了相同的错误。这是否意味着嵌入Outlook是不可能的,或者还有其他可尝试的选项?此外,是否有任何参考资料表明Office 365应用程序的设计原则是无法在任何地方嵌入它们?这会使观点更加强有力。 - Andy Dufresne
1
@AndyDufresne:当我写这个答案时,它是针对Exchange 2003 on-premise的。这种技术被微软支持和记录,并称其为OWA web parts。然而,从Exchange 2013(CU2)开始,他们开始插入X-Frame-Options头来防止点击劫持。这也适用于O365。目前安全限制比以往任何时候都更高,这是正确的,因为O365是公共云。 (我认为您仍然可以在on-premise上覆盖X-Frame,但这是不可取的)。对于O365,推荐的方法是使用API、EWS/Graph编写代码。 - Abhitalks
@AndyDufresne:这是你要求的权威参考资料:https://blogs.msdn.microsoft.com/webdav_101/2015/05/14/owa-customization-and-development。请注意其中明确指出的段落:“...请注意,来自共享Exchange Online服务器的OWA Web部件不能在IFRAME中使用,因为无法设置所有必需的设置以覆盖点击劫持。如果您想在IFRAME中使用OWA Web部件,则需要使用专用的Exchange Online服务器或本地服务器。” - Abhitalks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接