给列表绑定EventHandler

需求:在Sharepoint2010中增加一条记录时发送邮件给其他用户

思路:给列表绑定一个EventHandler,重写Added方法

步骤一:创建列表(TestEventHandlerList)

步骤二:  创建类(TestListEventHandler)

 public class TestListEventHandler : SPItemEventReceiver
    {
        public override void ItemAdded(SPItemEventProperties properties)
        {
            //base.ItemAdded(properties);
            try
            {
                SPListItem item = properties.ListItem;
                string title = item["标题"].ToString();
                string creator = "null";
                string createTime = "null";
                if (item["创建者"] != null)
                {
                    creator = item["创建者"].ToString();
                }
                if (item["创建时间"] != null)
                {
                    createTime = item["创建时间"].ToString();
                }

                new TimerExecute().SendMail("added"+title, creator+createTime);
                

            }
            catch (Exception ex)
            {
                MailMessage message = new MailMessage();
                message.From = new MailAddress("xxx@xxx.com.cn");
                message.To.Add("xx@xx.com.cn");
                message.Subject = "error";
                message.Body = ex.Source + "**" + ex.Message;
                SmtpClient client = new SmtpClient("192.168.0.1");
                client.Send(message);
            }
        }
        public override void ItemAdding(SPItemEventProperties properties)
        {
            //base.ItemAdding(properties);
            try
            {
                SPListItem item = properties.ListItem;
                if (item == null)
                {
                    throw new Exception("properties.ListItem is null");
                }
                string title = "null";
                if (item["标题"] == null)
                {
                    title = item["标题"].ToString();
                }
                string creator = "null";
                string createTime = "null";
                if (item["创建者"] != null)
                {
                    creator = item["创建者"].ToString();
                }
                if (item["创建时间"] != null)
                {
                    createTime = item["创建时间"].ToString();
                }

                new TimerExecute().SendMail("adding"+title, creator + createTime);
            }
            catch (Exception ex)
            {
                MailMessage message = new MailMessage();
                message.From = new MailAddress("xxx@greatwall.com.cn");
                message.To.Add("xxx@greatwall.com.cn");
                message.Subject = "error";
                message.Body = ex.Source+"**"+ex.Message ;
                SmtpClient client = new SmtpClient("192.168.0.1");
                client.Send(message);
            }


        }
    }

步骤三: 把dll放到GAC目录中

步骤四:写个winform程序把TestListEventHandler的事件绑定到TestEventHandlerList上

private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                Type receiverType = typeof(TestListEventHandler);
                //MessageBox.Show(receiverType.Assembly.FullName);
                SPSite site = new SPSite("http://gwsps03");
                SPWeb web = site.OpenWeb();
                SPList lists = web.Lists.TryGetList("TestEventHandlerList");
                //先卸载
                foreach (SPEventReceiverDefinition def in lists.EventReceivers)
                {
                    if (def.Assembly == receiverType.Assembly.FullName)
                    {
                        def.Delete();
                        break;
                    }
                }
                //string assName = "SharepointStudy, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b839543c1c684877";
                string assName = receiverType.Assembly.FullName;
                string claName = "SharepointStudy.TestListEventHandler";
                lists.EventReceivers.Add(SPEventReceiverType.ItemAdded, assName, claName);
                lists.EventReceivers.Add(SPEventReceiverType.ItemAdding, assName, claName); 
                MessageBox.Show("部署成功");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

步骤五:测试,增加一条记录,就收到邮件了,OK了.

 

原文地址:https://www.cnblogs.com/sportdog/p/2848877.html