如何在SharePoint2010中创建自定义电子邮件警报处理程序
- 字段,如项目名称字段中,将被截断到的电子邮件通知中的 70 个字符。要解决 70 个字符的限制,请使用"更多信息"一节中的介绍的方法。
- 要嵌入电子邮件通知中的其他内容。
- 您想要更改的布局或外观的电子邮件通知。
此方法创建一个类,从IAlertNotificationHandler接口继承,并使用OnNotification方法。此方法可以截获传出的电子邮件通知,并对其进行修改。您可以访问该警报的属性中的大多数。通过使用 XML 分析和 SharePoint 对象模型的代码,您可以提取必须具有修改电子邮件警报的所有信息。然后,您可以生成 HTML 存根以显示根据您的要求的电子邮件通知。此外,您可以通过使用 SharePoint 的 SendMail 功能发送电子邮件通知。
这些步骤包括输出以接近于默认通知模板的电子邮件格式设置的示例代码。您可以修改此示例代码中的 HTML,以自定义生成的电子邮件通知。
- 创建一个项目,从IAlertNotificationHandler接口继承。在项目中包括 Microsoft.SharePoint 命名空间和 Microsoft.SharePoint.Utilities 的命名空间。
使用以下代码://===================code start=====================
public class Class1:IAlertNotifyHandler
{ #region IAlertNotifyHandler Members public bool OnNotification(SPAlertHandlerParams ahp)
{
SPSite site = null;
SPWeb web = null; try
{
site = new SPSite(ahp.siteUrl+ahp.webUrl);
web = site.OpenWeb();
SPList list=web.Lists[ahp.a.ListID];
SPListItem item = list.GetItemById(ahp.eventData[0].itemId) ; string FullPath=HttpUtility.UrlPathEncode(ahp.siteUrl+"/"+ahp.webUrl+"/"+list.Title+"/"+item.Name);
string ListPath = HttpUtility.UrlPathEncode(ahp.siteUrl + "/" + ahp.webUrl + "/" + list.Title);
string webPath=HttpUtility.UrlPathEncode(ahp.siteUrl+"/"+ahp.webUrl); string build = "";
if (ahp.eventData[0].eventType==1)
eventType="Added";
else if(ahp.eventData[0].eventType==2)
eventType="Changed";
else if(ahp.eventData[0].eventType==3)
eventType="Deleted"; build = "<style type=\"text/css\">.style1 { font-size: small; border: 1px solid #000000;"+
"background-color: #DEE7FE;}.style2 { border: 1px solid #000000;}</style></head>"+
"<p><strong>"+ item.Name.ToString() +"</strong> has been "+eventType +"</p>"+
"<table style=\"width: 100%\" class=\"style2\"><tr><td style=\"width: 25%\" class=\"style1\">"+
"<a href="+ webPath +"/_layouts/mysubs.aspx>Modify my Settings</a></td>"+
"<td style=\"width: 25%\" class=\"style1\"> <a href="+ FullPath +">View "+item.Name+"</a></td>"+
"<td style=\"width: 25%\" class=\"style1\"><a href=" + ListPath + ">View " + list.Title + "</a></td>" +
" </tr></table>";
string subject=list.Title.ToString() ;
SPUtility.SendEmail(web,true , false, ahp.headers["to"].ToString(), subject,build);
return false;
}
catch (System.Exception ex)
{
return false;
}
finally
{
if (web != null)
web.Dispose();
if (site != null)
site.Dispose();
} } #endregion
}
//===================code end===================== - 强签名的.dll 文件添加到全局程序集缓存 (GAC) 中。您可以将该程序集拖到程序集文件夹。或者,您可以使用 GACUtil 工具来注册.dll 文件。
有关详细信息,请访问下面的 MSDN Web 站点。- 将程序集安装到全局程序集缓存中
http://msdn2.microsoft.com/en-us/library/dkkx7f79 (vs.71).aspx
(http://msdn2.microsoft.com/en-us/library/dkkx7f79 (vs.71).aspx)
- 全局程序集缓存工具 (Gacutil.exe)
http://msdn2.microsoft.com/en-us/library/aa309379 (VS.71).aspx
(http://msdn2.microsoft.com/en-us/library/aa309379 (VS.71).aspx)
有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
() http://support.microsoft.com/kb/315682/
如何将程序集安装到全局程序集缓存在 Visual Basic.NET 或 Visual Basic 2005年中
- 将程序集安装到全局程序集缓存中
- 请在下面的文件夹中的 alertTemplates.xml 文件的副本:
C:\Program 必须使用 Shared\Web 服务器 Extensions\12\Template\Xml
命名为 CustomAlertTemplates.xml,该新文件,然后保存该文件。
注意不要直接修改 alertTemplates.xml 文件。直接修改此文件不受支持。 - 编辑文件和搜索的关键字属性。在属性块中添加以下行:
<NotificationHandlerAssembly>AlertHandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d59ecf2a3bd66904</NotificationHandlerAssembly>
<NotificationHandlerClassName>AlertHandler.Class1</NotificationHandlerClassName>
<NotificationHandlerProperties></NotificationHandlerProperties>存根 (stub) 应类似于这现在:
<Properties>
<ImmediateNotificationExcludedFields>ID;Author;Editor;Modified_x0020_By;Created_x0020_By;_UIVersionString;ContentType;TaskGroup;IsCurrent;Attachments;NumComments;</ImmediateNotificationExcludedFields>
<DigestNotificationExcludedFields>ID;Author;Editor;Modified_x0020_By;Created_x0020_By;_UIVersionString;ContentType;TaskGroup;IsCurrent;Attachments;NumComments;</DigestNotificationExcludedFields>
<NotificationHandlerAssembly>AlertHandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d59ecf2a3bd66904</NotificationHandlerAssembly>
<NotificationHandlerClassName>AlertHandler.Class1</NotificationHandlerClassName>
<NotificationHandlerProperties></NotificationHandlerProperties>
</Properties>要在警报的模板文件中每个警报的模板部分中包括此 XML 存根 (stub)。
- 在命令提示符下,更改 C:\Program 必须使用 Shared\web 的服务器 extensions\12\BIN 目录。然后,运行以下命令:
stsadm-o updatealerttemplates-文件名"是 Files\Common Files\Microsoft Shared\Web 服务器 Extensions\12\TEMPLATE\XML\customalerttemplates.xml"-url your_sharepoint_site url
- 运行以下命令:
stsadm-o setproperty-pn 作业-立即-通知-pv"每隔 1 分钟"
此命令指定 SharePoint 服务器检查都要立即发送的通知的频率。以分钟为单位指定的值。对于此测试,将频率设置为 1 分钟。
有关详细信息,请访问下面的 Microsoft 网站:(http://technet2.microsoft.com/windowsserver/WSS/en/library/0eb072fe-8321-483b-9d1e-3412e3f42a481033.mspx?mfr=true)
- 请确保您拥有 SharePoint 配置传出电子邮件。有关如何配置传出电子邮件的详细信息,请访问下面的 Microsoft 网站:
(http://technet2.microsoft.com/windowsserver/WSS/en/library/91570494-09ba-4537-904b-c61a6268d6bc1033.mspx?mfr=true)
- 如果测试使用文档库,请确保您有打开的文档库的通知。
- 运行以下命令:
- iisreset
- 服务
- 在服务 MMC 管理单元中,重新启动 Windows SharePoint Services 定时服务。
完成这些步骤之后,应配置自定义电子邮件通知的处理程序。创建一个新警报后,您将收到已更新的自定义电子邮件警报。
如何在SharePoint2010中创建自定义电子邮件警报处理程序的更多相关文章
- 如何在VMware中创建虚拟机
今天给大家分享如何在VMware中创建虚拟机,具体的教程如下.在这里小编提前下载了Ubuntu14.04桌面系统,为后面在虚拟机中安装Ubuntu14.04桌面系统做准备. 1.从官网上或者直接百度上 ...
- 详解如何在Laravel中增加自定义全局函数
http://www.php.cn/php-weizijiaocheng-383928.html 如何在Laravel中增加自定义全局函数?在我们的应用里经常会有一些全局都可能会用的函数,我们应该怎么 ...
- Android DevArt5:如何在Android中创建多线程?
本篇内容: 如何在Android中创建多进程?查看进程的三种方式有哪些? 多进程模式的运行机制?- 演示了多进程出现问题中的两种情况: 静态成员失效 Application多次创建 IPC基础概念介绍 ...
- 在Oracle电子商务套件版本12.2中创建自定义应用程序(文档ID 1577707.1)
在本文档中 本笔记介绍了在Oracle电子商务套件版本12.2中创建自定义应用程序所需的基本步骤.如果您要创建新表单,报告等,则需要自定义应用程序.它们允许您将自定义编写的文件与Oracle电子商务套 ...
- 如何在sharepoint2010中配置Google Anlytics 分析服务
简介 Google Analytics(分析)不仅可以帮助您衡量销售与转化情况,而且能为您提供新鲜的深入信息,帮助您了解访问者如何使用您的网站,他们如何到达您的网站,以及您可以如何吸引他们不断回访 ...
- 【翻译】在Ext JS和Sencha Touch中创建自定义布局
原文:Creating Custom Layouts in Ext JS and Sencha Touch 布局系统是Sencha框架中最强大和最独特的一部分.布局会处理应用程序中每个组件的大小和位置 ...
- PS网页设计教程XXVI——如何在PS中创建一个专业的网页布局
作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,“熟读唐诗三百首,不会作诗也会吟”. 本系列的教程来源于网上的PS教程,都是国外的,全英文的.本人尝试 ...
- 在 ASP.NET MVC 中创建自定义 HtmlHelper
在ASP.NET MVC应用程序的开发中,我们常碰到类似Html.Label或Html.TextBox这样的代码,它将在网页上产生一个label或input标记.这些HtmlHelper的扩展方法有些 ...
- Javascript 中创建自定义对象的方法(设计模式)
Javascript 中创建对象,可以有很多种方法. Object构造函数/对象字面量: 抛开设计模式不谈,使用最基本的方法,就是先调用Object构造函数创建一个对象,然后给对象添加属性. var ...
随机推荐
- [UWP]涨姿势UWP源码——Unit Test
之前我们讨论了涨姿势UWP的RSS数据源获取,以及作为文件存储到本地,再将数据转化成Model对象.这部分非UI的内容非常适合添加Unit Test.不涉及UI的话,UT写起来简单高效,很是值得投入一 ...
- Java Management extentsions(jmx)与tomcat
1,概念:一个可以使用JMX管理器来管理的Java对象称为JMX管理资源(JMX manageable resource).事实上,一个JMX管理资源也可以是一个应用程序.一个实现或者一个服务.设备. ...
- Cordova webapp实战开发:(4)Android环境搭建
在<Cordova webapp实战开发:(3)后面可能会学到的东西>中我们说了一下后续大致包括的内容,今天我们继续.上周我在掌中广材集成了友盟的社交分享,今天想集成iOS应该很顺利的,但 ...
- C#方法的参数
- JS打印页面指定区域
错误的写法: //打印 function printPage(areaId) { if (parent.$("#PrinFrame").length == 0) { parent. ...
- ASP.NET MVC图片管理(更新)
Insus.NET在ASP.NET MVC专案中,实现了图片管理,上传,预览,显示,删除等功能,还差一个功能,就是更新图片的功能,那这次来完成它.你可以先参考前2篇<ASP.NET MVC图片管 ...
- 求SQL语句递归的算法
表结构是这样的 部门 上级部门 A BB CC DA AB BC C ...
- 认识IoC
第一次接触IoC是我在学习MVP框架的时候,搭建一个MVP框架需要用到IoC,那时候就以为IoC就是依赖注入,但在后来的逐步了解中发现那个只是它的别名而已.IoC全称应该是Inversion of C ...
- cookies
Cookie[] cookies=request.getCookies(); for(Cookie c:cookies) out.println(c.getValue()+" ") ...
- phpcms 移植【添加相关文章】功能
添加相关文章功能相当有用,移植一个过来基本上可以实现比较复杂的页面内包含分类功能,做二次开发时可以省下不少力气. 用例:如果一个产品,属于一个厂家,而这个厂家是动态添加的,既不是一个分类,而是一个厂家 ...