为EventHandler添加发送邮件功能(收藏)(转自)

下面主要代码为主,一些记录,以备不时只需!

 

1.新建一个类库项目TaskEventHandler

01 using System;
02 using System.Collections.Generic;
03 using System.Linq;
04 using System.Text;
05 using Microsoft.SharePoint;
06 using Microsoft.SharePoint.Utilities;
07 using System.IO;
08   
09 namespace EventHandler
10 {
11     public class TaskEventHandler : SPItemEventReceiver
12     {
13         public override void ItemAdded(SPItemEventProperties properties)
14         {
15             //base.ItemAdded(properties);
16             SPListItem taskListItem = properties.ListItem;
17             SPFieldUser assignedTo = (SPFieldUser)taskListItem.Fields[SPBuiltInFieldId.AssignedTo];
18             SPFieldUserValue user = (SPFieldUserValue)assignedTo.GetFieldValue(taskListItem[SPBuiltInFieldId.AssignedTo].ToString());
19             SPUser userObject = user.User;
20             using (SPWeb web = new SPSite(properties.SiteId).OpenWeb(properties.RelativeWebUrl))
21             {
22                 bool isEmailServerSet = SPUtility.IsEmailServerSet(web);
23                 if (isEmailServerSet)
24                 {
25                     bool appendHtmlTag = false;
26                     bool htmlEncode = false;
27                     string toAddress = userObject.Email;
28                     string subject = "Tasks - " + taskListItem[SPBuiltInFieldId.Title] + "  has been assigned to you";
29                     StringBuilder sb = new StringBuilder("" + taskListItem[SPBuiltInFieldId.Title] + "has been assigned to you");
30                     sb.Append("<table>");
31                     sb.Append("<tr><td>Title:</td><td>" + taskListItem["Title"] + "</td></tr>");
32                     sb.Append("<tr><td>Priority:</td><td>" + taskListItem[SPBuiltInFieldId.Priority] + "</td></tr>");
33                     sb.Append("<tr><td>Status:</td><td>" + taskListItem[SPBuiltInFieldId.StatusBar] + "</td></tr>");
34                     sb.Append("<tr><td>% Complete:</td><td>" + taskListItem[SPBuiltInFieldId.Completed] + "</td></tr>");
35                     sb.Append("<tr><td>Assigned To:</td><td>" + taskListItem[SPBuiltInFieldId.AssignedTo] + "</td></tr>");
36                     sb.Append("<tr><td>Description:</td><td>" + taskListItem[SPBuiltInFieldId.DecisionStatus] + "</td></tr>");
37                     sb.Append("<tr><td>Start Date:</td><td>" + taskListItem[SPBuiltInFieldId.StartDate] + "</td></tr>");
38                     sb.Append("<tr><td>Due Date:</td><td>" + taskListItem[SPBuiltInFieldId.Duration] + "</td></tr>");
39                     sb.Append("</table>");
40                     sb.Append("Last Modified " + taskListItem[SPBuiltInFieldId.Modified] + " by " + taskListItem[SPBuiltInFieldId.Modified_x0020_By] + "");
41                     sb.Append("<hr />");
42                     string message = "";
43                     bool result = SPUtility.SendEmail(web, appendHtmlTag, htmlEncode, toAddress, subject, message);
44                 }
45   
46                 SPListItem item = properties.ListItem;
47                 string path = @"C:\test.txt";
48                 StreamWriter writer = new StreamWriter(path);
49                 writer.WriteLine("My Test");
50                 foreach (SPField f in properties.ListItem.Fields)
51                 {
52                     writer.WriteLine(f.Title + "==>" + properties.ListItem[f.Title]);
53                 }
54                 writer.WriteLine("++++++++++++++++++++++++++++++++++++++++++++++++++++");
55                 writer.WriteLine("SPUtility.IsEmailServerSet(web)==>" + SPUtility.IsEmailServerSet(web));
56                 writer.WriteLine("userObject.Email" + userObject.Email);
57                 writer.WriteLine("taskListItem[SPBuiltInFieldId.Title]==>" + taskListItem[SPBuiltInFieldId.Title]);
58                 writer.WriteLine("taskListItem[SPBuiltInFieldId.Body]==>" + taskListItem[SPBuiltInFieldId.Body]);
59                 writer.WriteLine("ReceiverData==>" + properties.ReceiverData);
60                 writer.WriteLine("EmailBody==>" + taskListItem[SPBuiltInFieldId.EmailBody]);
61                 writer.WriteLine("EMail==>" + taskListItem[SPBuiltInFieldId.EMail]);
62                 writer.WriteLine("Email2==>" + taskListItem[SPBuiltInFieldId.Email2]);
63                 writer.WriteLine("Email3==>" + taskListItem[SPBuiltInFieldId.Email3]);
64                 writer.WriteLine("EmailBody==>" + taskListItem[SPBuiltInFieldId.EmailFrom]);
65                 writer.WriteLine("EmailFrom==>" + taskListItem[SPBuiltInFieldId.EmailSubject]);
66                 writer.WriteLine("EmailTo==>" + taskListItem[SPBuiltInFieldId.EmailTo]);
67                 writer.WriteLine("EncodedAbsWebImgUrl==>" + taskListItem[SPBuiltInFieldId.EncodedAbsWebImgUrl]);
68                 writer.WriteLine("EmailCc==>" + taskListItem[SPBuiltInFieldId.EmailCc]);
69                 writer.Close();
70             }
71         }
72     }
73 }
1 2.新建一个控制台应用程序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;

namespace RevolutionTaskApp
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite(http://mossserver:7000/))
            {
                using (SPWeb web = site.RootWeb)
                {
                    SPList list = web.Lists["Tasks"];
                    //下面第二个参数为上面的DLL程序集信息,可用Reflector查看
                    list.EventReceivers.Add(SPEventReceiverType.ItemAdded, "EventHandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=64e8493434b90339", "EventHandler.TaskEventHandler");
                    Console.WriteLine("doing ....");
                    Console.ReadKey();
                }
            }

        }
    }
}
3. 运行控制台应用程序即可….
posted @ 2011-03-24 09:53 酱板猪 阅读(24) 评论(0) 编辑 收藏