zoukankan      html  css  js  c++  java
  • 邮件通知定制

    Moss自帶的發郵件通知(提酲我)功能往往達不到客戶想要的效果,下面我將介紹一下怎麼樣自定義這個通知(提酲我)的郵件內容。

    1.      先了解通知(提酲我)的基本知識

    a.       通知(提酲我)是由WSS的定時執行程式(Windows SharePoint Services Timer)來定時發郵件提醒的,在這之前請確保這個服務已經啟用,如果啟用了可以在工作管理員下的處理程序中看到有一個OWSTIMER.EXE的進程

    b.      所發送通知(提酲我)的主旨與內容格式默認是在12"TEMPLATE"XML"alerttemplates.xml文件中定義的(註:此文件是不可以修改的)

    c.       alerttemplates.xml中定義了各種類型的郵件模板,包括

    ü   SPAlertTemplateType.GenericList:如沒有使用以下模板,則用此模板

    ü   SPAlertTemplateType.DocumentLibrary:有关对文档库所做更改的通知

    ü   SPAlertTemplateType.Survey:有关对调查所做更改的通知

    ü   SPAlertTemplateType.Links:有关对链接所做更改的通知

    ü   SPAlertTemplateType.Announcements:有关对声明所做更改的通知

    ü   SPAlertTemplateType.Contacts:有关对联系人所做更改的通知

    ü   SPAlertTemplateType.Events:有关对事件所做更改的通知

    ü   SPAlertTemplateType.Tasks:有关对任务所做更改的通知

    ü   SPAlertTemplateType.DiscussionBoard:有关对讨论板所做更改的通知

    ü   SPAlertTemplateType.PictureLibrary:有关对图片库所做更改的通知

    ü   SPAlertTemplateType.XMLForm:有关对 XML 表单所做更改的通知

    ü   SPAlertTemplateType.DataConnectionLibrary:有关对数据连接库所做更改的通知

    ü   SPAlertTemplateType.AssignedtoNotification:有关分配到任务列表和问题列表的通知

    d.   通知的格式定義了郵件的內容,通知發送郵件的條件等,且其內容是由CAML組成
    <AlertTemplate Type="List" Name="SPAlertTemplateType.GenericList">

     <Format>

        <Digest>

          <Subject>

          </Subject>

          <Header>

          </Header>

          <HeaderFieldsHeader>

          </HeaderFieldsHeader>

          <HeaderFields>

          </HeaderFields>

          <HeaderFieldsFooter>

          </HeaderFieldsFooter>

          <RowHeader>

          </RowHeader>

          <RowFields>

          </RowFields>

          <RowFooter>

          </RowFooter>

          <Footer>

          </Footer>

        </Digest>

        <Immediate>

          <Subject>

          </Subject>

          <Header>

          </Header>

          <Fields>

          </Fields>

          <Footer>

          </Footer>

        </Immediate>

     </Format>

     <Properties>

        <ImmediateNotificationExcludedFields>

        </ImmediateNotificationExcludedFields>

        <DigestNotificationExcludedFields>

        </DigestNotificationExcludedFields>

        <NotificationHandlerAssembly>

          Handler assembly strong name

        </NotificationHandlerAssembly>

        <NotificationHandlerClassName>

          Fully qualified class name

        </NotificationHandlerClassName>

        <NotificationHandlerProperties>

          Other option properties you want to pass

        </NotificationHandlerProperties>

        <UpdateHandlerAssembly>

          Assembly

        </UpdateHandlerAssembly>

        <UpdateHandlerClassName>

          Class name

        </UpdateHandlerClassName>

        <UpdateHandlerProperties>

          Other properties

        </UpdateHandlerProperties>

     </Properties>

     <Filters>

        <FilterDefinition>

          <FriendlyName></FriendlyName>

          <ShortName></ShortName>

          <Query>

            <Neq>

              <FieldRef name="EventDate/New"/>

              <FieldRef name="EventDate/Old"/>

            </Neq>

          </Query>

        </FilterDefinition>

     </Filters>

    </AlertTemplate>

    e.       如果要自定義某種類型的通知(如自定義文檔庫的通知),請先拷由一份alerttemplates.xml文件將其命名為其它的名稱(如CustomAlerttemplates.xml),再在CustomAlerttemplates.xml文件中修改其通知格式,修改完成後執行stsadm -o updatealerttemplates -filename "C:"Program Files"Common Files"Microsoft Shared"Web Server Extensions"12"TEMPLATE"XML"customalerttemplates.xml" -url your_sharepoint_site url與 stsadm -o setproperty -pn job-immediate-alerts -pv "every 1 minutes"
    再IISRESET與重新啟用Windows SharePoint Services Timer服務即可

    2.      使用DONET開發自義的通知

    1.      創建一個類庫(如:CustomAlertTemplate)

    2.      給這個類庫加上強命名空間

    3.      引用Microsoft.SharePoint與Microsoft.SharePoint.Utilities;

    4.      創建一個類(名稱如DocAlertTemplate)

    5.      將這個類繼承自接口IAlertNotifyHandler

    6.      實現IAlertNotifyHandler的OnNotification方法

    7.      在OnNotification方法中調用SPUtility.SendEmail來發送郵件

    8.      編輯這個類庫,將dll文件拖到GAC中去

    9.      拷由一分alerttemplates.xml文件,重命名為CustomAlerttemplates.xml

    10. 在CustomAlerttemplates.xml文件中找到SPAlertTemplateType.DocumentLibrary模板,在這個模板下的Properties節點中加入
    <NotificationHandlerAssembly>CustomAlertTemplate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxx</NotificationHandlerAssembly>   <NotificationHandlerClassName>CustomAlertTemplate.DocAlertTemplate</NotificationHandlerClassName>

    <NotificationHandlerProperties></NotificationHandlerProperties>

    11. 當然CustomAlerttemplates.xml文件中除了SPAlertTemplateType.DocumentLibrary模板以外的其它模板你也可以刪除也可以不刪除,而SPAlertTemplateType.DocumentLibrary模板的內容也可以為空,不過最後不要為空,如果為空的話,你在OnNotification方法中就取不到默認的內容了

    12. 執行stsadm -o updatealerttemplates -filename "C:"Program Files"Common Files"Microsoft Shared"Web Server Extensions"12"TEMPLATE"XML"customalerttemplates.xml" -url your_sharepoint_site url 與 stsadm -o setproperty -pn job-immediate-alerts -pv "every 1 minutes"
    再IISRESET與重新啟用Windows SharePoint Services Timer服務即可

    3.      在開發過程中要註意的事項

    a.       調試文件請附附加處理程序OWSTIMER.EXE而不是w3wp.exe

    b.      如果不是第一次部署,而是部署後再更新了DLL文件,再將DLL文件拖到GAC目錄中去,那麼每次都要執行IISRESET與重起Windows SharePoint Services Timer服務才行

    c.       如果是更新DLL文件再調試,這個時候應該跟蹤不到,必須讓服務執行一次後才能跟蹤到(如你定義的是A文件庫的通知,那麼更新後,必須先由A發送一次後,再執行a步驟即可以調試)

  • 相关阅读:
    《仔仔细细分析Ext》 第N2章 GridPanel的小难点 第一节 每条数据后面跟随几个操作按钮
    TextField输入验证
    Ext.FormPanel 及控件横排显示
    备份
    重写
    this关键字
    TestCircle程序分析
    java方法重载
    static关键字
    super关键字
  • 原文地址:https://www.cnblogs.com/ceci/p/1545148.html
Copyright © 2011-2022 走看看