Sharepoint 2013 创建TimeJob 自动发送邮件

创建Time Job

继承继承SPJobDefinition 并且实现里边的 Execute方法

部署

可以手动部署,把程序集放到GAC,手动激活feature

如果部署的时候说feature已经存在,在feature的XML里面添加代码 AlwaysForceInstall="TRUE",如下

<?xml version="1.0" encoding="utf-8" ?>
<Feature xmlns="http://schemas.microsoft.com/sharepoint/"
         AlwaysForceInstall="TRUE"
         Title="Time Job for Find Document" 
         Description="Custom Feature for Time job">
</Feature>

安装

写到Feature,添加或者删除

更新

需要重新启动Windows SharePoint Services Timer 服务

调试

把OWSTIMER.EXE添加到进程

定义Timejob代码

引用

using Microsoft.SharePoint.Administration;

using Microsoft.SharePoint.Utilities;

public class FindDocument:SPJobDefinition
    {
        public FindDocument()
            : base()
        {
        }

        public FindDocument(string jobName, SPWebApplication webapp)
            : base(jobName, webapp, null, SPJobLockType.ContentDatabase)
        {
            this.Title = Constants.FDJobName;
        }

        public override void Execute(Guid targetInstanceId)
        {
            SPWebApplication webapp = this.Parent as SPWebApplication;
            SPContentDatabase contentDb = webapp.ContentDatabases[targetInstanceId];

            string webUrl = this.Properties["WebUrl"].ToString();
            using (SPSite site = new SPSite(webUrl))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    //Send mail to somebody
                    SPUtility.SendEmail(web, false, false,
                       "xxx@xxx.com", "E-mail title",
                       "E-mail body");
                    //udpate list
                    SPList list = web.Lists["Test"];
                    SPListItem item = list.Items[0];
                    item["Title"] = "Date " + DateTime.Now.ToString();
                    item.SystemUpdate();
                }
            }
        }

        //If active feature error, please active feature manually.
        protected override bool HasAdditionalUpdateAccess()
        {
            return true;
        }
    }

安装卸载Timejob代码

引用

using Microsoft.SharePoint.Administration;

public class TimeJobFeatureEventReceiver : SPFeatureReceiver
    {
        // Uncomment the method below to handle the event raised after a feature has been activated.
        const string JobName = Constants.FDJobName;
        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            SPWeb web = properties.Feature.Parent as SPWeb;
            DeleteJob(web); // Delete Job if already Exists
            CreateJob(web); // Create new Job
        }


        public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
        {
            DeleteJob(properties.Feature.Parent as SPWeb); // Delete the Job
        }

        private static void DeleteJob(SPWeb web)
        {
            foreach (SPJobDefinition job in web.Site.WebApplication.JobDefinitions)
                if (job.Name == JobName)
                    job.Delete();
        }

        private static void CreateJob(SPWeb web)
        {

            TimeJob.Jobs.FindDocument job = new TimeJob.Jobs.FindDocument(JobName, web.Site.WebApplication);
            job.Properties.Add("WebUrl", web.Url);
            SPDailySchedule schedule = new SPDailySchedule();
            schedule.BeginHour = 16;
            schedule.BeginMinute = 00;
            schedule.EndHour = 16;
            schedule.EndMinute = 30;
            job.Schedule = schedule;
            job.Update();
        }
    }

  

 

posted @ 2015-08-05 17:25  batter152  阅读(1185)  评论(0编辑  收藏  举报