SharePoint 2010 Timer Job For Sending Email Notification

Merry Christmas …. !!!

Every one are very familiar with SharePoint 2010 Timer Job. We just take a quick look over Timer Job. SharePoint handles some repetitive background process at some specific time is called ” Timer Job”.

Now the question is How the Timer Job will Help you ? OK, suppose you are a Project Manager and you want to remind your colleague to update your daily status. You just write a timer job that will send the email to your colleague for updating the daily status sheet.

Lets start with walk through ….. 🙂

  • Crate a SharePoint Custom list and Name it “CustomEmailNotifications” and Store the Email addresses in Title Column.
  • Open Visual Studio 2010 and create a new Empty SharePoint Project and name it “NewNotificationTimerJob“.
  • Add a new Class and call it “CustomEmailNotificationJob”.
  • Copy following code.

public class CustomEmailNotificationJob:SPJobDefinition
{
public const string JOB_NAME = “Custom Daily Status Notifications Job”;

public CustomEmailNotificationJob()
: base()
{
}

public CustomEmailNotificationJob(string jobName, SPService service, SPServer server, SPJobLockType targetType)
: base(jobName, service, server, targetType)
{
}

public CustomEmailNotificationJob(string jobName, SPWebApplication webApplication)
: base(jobName, webApplication, null, SPJobLockType.ContentDatabase)
{
this.Title = JOB_NAME;
}

public override void Execute(Guid contentDbId)
{

// Change your site
using (SPSite oSPsite = new SPSite(“http://abcd/”))
{
using (SPWeb oSPWeb = oSPsite.OpenWeb())
{
oSPWeb.AllowUnsafeUpdates = true;

// Fetch the List
SPList list = oSPWeb.Lists[“CustomEmailNotifications”];
SPListItemCollection collListItem = list.Items;
foreach (SPListItem oListItem in collListItem)
{
EmailUser(oListItem.Title);

}
}
}
}

private bool EmailUser(string emailAddress)
{
MailMessage mail = new MailMessage();

//change the Email address
mail.From = new MailAddress(“someone@mail.com”);
mail.To.Add(emailAddress);
mail.Subject = “Daily Status”;
mail.Body = “Please Update your Daily Status on Portal : “;

//Change to your SMTP server
SmtpClient smtp = new SmtpClient(“abc.com”);
smtp.Send(mail);
return true;
}
}

  • Next we need to add a Feature, so right-click the Features folder and add Feature
  • After adding the Feature, right-click it and Add Event Receiver
  • Copy the following code to the event receiver:

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPSite site = properties.Feature.Parent as SPSite;
//remove the job if it already exists
foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
{
if (job.Name == CustomEmailNotificationJob.JOB_NAME)
job.Delete();
}

// create the job
CustomEmailNotificationJob emailJob = new CustomEmailNotificationJob(CustomEmailNotificationJob.JOB_NAME, site.WebApplication);
SPMinuteSchedule schedule = new SPMinuteSchedule();
schedule.BeginSecond = 0;
schedule.EndSecond = 59;
schedule.Interval = 5;
emailJob.Schedule = schedule;
emailJob.Update();
}

// Uncomment the method below to handle the event raised before a feature is deactivated.

public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
SPSite site = properties.Feature.Parent as SPSite;
foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
{
if (job.Name == CustomEmailNotificationJob.JOB_NAME)
job.Delete();
}
}

  • Now the last step is to set the scope of the feature to Site
  • Build the Project and Deploy.
  • Go to Central Admin — > Monitoring — >Timer Jobs — >Review job Definition .

Timerjob1

  • In the Review Job Definitions you can see your timer job.
  • Hope every thing is write you will receive notification.

Debug Your Timer Job

For debugging your timer job you can follow this link  ” http://msdn.microsoft.com/en-us/library/ff798310.aspx ”

Enjoy  ….. 🙂 🙂 🙂 !

Advertisements

2 thoughts on “SharePoint 2010 Timer Job For Sending Email Notification

  1. This will be a fantastic site, will you be interested in doing an interview regarding just how you designed it? If so email me! cedgbdkebbad

  2. It is really a nice and helpful piece of info. Im glad that you shared this helpful information with us. Please keep us up to date like this. Thanks for sharing. ddecbeedkbke

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s