When you need to send email reports on a specific date and time you can either use Windows Services to do it (they run at background all the time and therefore are capable to user timer mechanisms), or you can put timed jobs into database (SQL Server) and use it's email mechanism (can't recall the procedure name at the moment).

If you don't have a database capable to send emails (this is may case), you have to build a Windows Service. First you have to understand what a Windows Service is and how it can be build. Please first read: Developing a Windows SERVICE Application using .NET Framework with C#.

To sum up, you create a new project in Visual Studio, select Windows Service Project as the project type. This gives you a class which inherits from System.ServiceProcess.ServiceBase and overrides OnStart(), OnStop(), OnPause(), OnContinue(), and OnShutdown(). The method names should be self explanatory. The next step is to add your code into the methods. The OnStart method is the one where you start your processing. Usually people use a timer there to kick off actions i.e. every 10 minutes.

Here are the steps to perform further:

1. Select Project > Add Reference > Select System.Web >Press Ok 

2. Add the following to your code 
          using System.Web.Mail;

3. Add the following code in OnStart():

MailMessage mm = new MailMessage();
mm.To = "your email address";
mm.From = "incoming email address";

mm.Subject="Hello";
mm.Body = "Mail Body";
SmtpMail.SmtpServer="localhost";
SmtpMail.Send(mm);

4. Go to Design, right click and Select Add Installer. You will notice two controls: serviceProcessInstaller1 and serviceInstaller1

5. Select  serviceProcessInstaller1 and go to its properties and change the Account type to 'Local System'

6. Select  serviceInstaller1 and go to its properties and change DisplayName and ServiceName to 'EmailAlerts' and make the StartType to 'Automatic'

7. Build the Solution(Cntrl+Shift+B)

8. Open the Visual Studio .Net Command Prompt and give the path of application

     for example C:\WindowsService1\bin\Debug and then type InstallUtil EmailAlerts.exe. To uninstall,  InstallUtil /u EmailAlerts.exe         

9. After Installation, right click My Computer and Select 'Manage'. Then select 'Service and Applications' and in that Select 'Services'

Select 'EmailAlerts' and start the Service.

This sample will send an email only ones, when the service is started. In order to send emails at given intervals you have to use Timer Objects. Here is an extensive articel about these objects: http://www.aspfree.com/c/a/C-Sharp/Timer-Objects-in-Windows-Services-with-C-sharp-dot-NET/

The problem with this sample is that you have to have a SMTP Server on the computer the Windows Service is running. Which is not very convenient when you try to build an application that will be installed on other computers.

Related posts:

  1. WPF ClickOnce Deployment First, some info from MSDN:   ClickOnce deployment allows you...
  2. Semantic Email Delivery Stanford University researchers are developing Semantic Email Addressing (SEAmail), an...
  3. Implementing a WPF Browser Application WPF Browser Applications, a.k.a. XAML Browser Applications, are Windows Presentation...
  4. Introduction to Windows Azure for developers Windows Azure promises to be an extremely interesting environment for...
  5. Deploying a WPF Browser Application When you build a WPF Browser Application (see my...