zoukankan      html  css  js  c++  java
  • 如何定制OWA的联系人选择页面(一)

    微软的exchange采用owa作为web mail 访问客户端,部署exchange的客户普遍提出了这样一个需求:owa的联系人选择页面不好用,只能采用查询
    的方式来选择收信人,可不可以直接提供基于组织机构树的联系人选择页面???

    显然,要实现这样一个需求,必须修改owa的源码!

    探索的过程就不说了,直接写一下解决方案。

    在exchange服务器上,打开IIS,可以看到跟exchange有关的几个虚拟目录:exchange , exchweb等。exchange虚拟目录映射到一个虚拟地址,
    内部没有任何文件。exchweb里面全部是一些图片,css,javascript,这些是OWA的资源文件.OWA有着良好的设计,它的资源文件和主题程序代码
    是分开的,这就给我们修改其默认实现提供了可能.

    在 exchweb/xxx 下有这样一个js文件: util_OWA.js , owa中选择联系人的脚本函数就在它里面.

    function openGal(szFieldNameTo, szFieldNameCc, szFieldNameBcc, oMsg)
    {

    var rgParams = new Array();

    if (szFieldNameTo != null)
    {rgParams[
    "ToName"= szFieldNameTo;rgParams["CcName"= szFieldNameCc;rgParams["BccName"= szFieldNameBcc;rgParams["objMessage"= oMsg;}
    else
    {

    rgParams[
    "fnAddRecip"= sendToNewMessage;

    }

    rgParams[
    "search"= g_iDefaultAddrSearch;if(typeof(g_sContactsFolder) == "string")

    rgParams[
    "contacts"= g_sContactsFolder;rgParams["fCertCheck"= g_fIsMimeInstalled;

    rgParams[
    "fontHeight"= g_nFontHeight;
    var nFontHeight = g_nFontHeight - 2;
    var nWidth = 110 + 30 * nFontHeight;
    var nHeight = 210 + 25 * nFontHeight ;

    //修改此处,改变默认联系人选择页面
    var vRetval = window.showModelessDialog(g_sBase + "?Cmd=dialog&template=dlg_gal&ver=6.5.6944.0" + "&theme="+g_thid, rgParams, "dialogHeight:"+nHeight+"px;dialogWidth:"+nWidth+"px;status:no;resizable:yes;help:no;");

    }

    我们只要将最后一行 弹出模态对话框的 路径改掉,就可以让owa使用我们自定义的联系人选择页面.

    接下来,我们需要保证自定义的联系人选择页面其返回参数跟owa默认页面一致.

    //联系人选择返回
        //i 有三个可选值:0,1,2 , 0表示填入收件人域,1表示填入抄送域,2表示填入密件抄送域 
        function addRec( i )
        {           
            
    if( window.dialogArguments == null )
            
    return ;
            
    //objMessage是owa打开联系人选择页面时传递的参数对象,通过此对象,可以更发邮件页面交互
            var objMessage = window.dialogArguments["objMessage"] ;         
            
            
    if( objMessage == null )
                
    return ;
        
            
    var to = "Sky Heart[smtp:jianyi0115@163.com]";    
            
            objMessage.addRecipients( i 
    + 1 ,  to  ); //填入

            objMessage.checkNames( i );     
    //到服务器端验证用户
            
        }

    关键的问题解决了,我们可以自定义自己的页面了, 组织机构数据,用户数据我们当然可以查询AD获取(或其他途径),最终,只要调用一下addRec即可

    <input name="btnTo" type="button"  value="收件人" onclick="addRec(0)" />
                           
    <input name="btnCc" type="button"  value="抄送" onclick="addRec(1)"/>
                         
    <input name="btnBcc" type="button"  value="密件抄送" onclick="addRec(2)"/>

    页面我们可以用asp,asp.net,php,任何windows支持的技术都可.

    一些注意事项:

    1)若要在exchange集群服务器上实施此改动,需要在集群的每台服务器上修改.

    2)util_OWA.js 可能会有几个版本, 如何确定要修改那个版本呢?
    访问邮件发送页面,看看它的html源码,用的是那个版本的util_OWA.js 就修改哪个.

    3)若自定义的页面需要获取当前用户信息,如何实现?
    owa有两种认证方式: 集成windows身份认证和表单认证,若采用集成windows身份认证有如下解决方案:

    我们自定义的页面在单独的虚拟目录下,确保这个目录和exchange属于同一个站点,并且身份认证方式完全一致.
    这样设置后,在asp.net页面中,可以通过System.Web.HttpContext.Current.User.Identity.Name 获取到用户的帐号.

    若owa采用表单认证, 因项目里没遇到这种情况,所有没有深入研究,暂时无解决方案.

    4) 以上动作在exchange server 2003版本实施通过,其他版本未确定.


    Do you need this solution ?





  • 相关阅读:
    jQuery EasyUI API 中文文档 可调整尺寸
    jQuery EasyUI API 中文文档 链接按钮(LinkButton)
    jQuery EasyUI API 中文文档 手风琴(Accordion)
    jQuery EasyUI API 中文文档 表单(Form)
    jQuery EasyUI API 中文文档 组合(Combo)
    jQuery EasyUI API 中文文档 布局(Layout)
    jQuery EasyUI API 中文文档 拆分按钮(SplitButton)
    jQuery EasyUI API 中文文档 菜单按钮(MenuButton)
    jQuery EasyUI API 中文文档 搜索框
    jQuery EasyUI API 中文文档 验证框(ValidateBox)
  • 原文地址:https://www.cnblogs.com/jianyi0115/p/687549.html
Copyright © 2011-2022 走看看