Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / web / ASP.NET

Send appointment through email in ASP.NET

3.96/5 (32 votes)
20 Nov 2012CPOL1 min read 1   5.9K  
Send appointment or event through mail, so it can be synchronized with Outlook calendar
SendAppointment/event1.png

Introduction

Nowadays, event management is becoming a very popular idea especially in case of web application development. Most of the application are synchronizing data with Outlook contacts and calendar. Here is a small tool to create hourly and daily events with send email in asp.net. This concept is very simple creating an ICS file and sending as mail attachment.

Background

I was developing a web application which is related to event management and my client requirement is to send day and hour events so it will be synchronized with client’s Outlook calendar.

Send Event/Appointment

In Outlook, two types of events/appointments can be sent.

  1. Hourly event (based on specific hour of a day)
  2. Day event (based on specific days)

Hourly Event

To send hourly event, you need to send ics file for hour event. ICS file looks like that:

SendAppointment/cal_hour_event.png

I have made a simple UI to send hour event. To load hour, use a simple control from AjaxControlToolkit. This is the simple UI.

SendAppointment/hour_event.png

Code to create ICS file for day event/appointment:

C#
public string MakeHourEvent(string subject, string location, 
	DateTime date, string startTime, string endTime)
   {
    string filePath = string.Empty;
    string path = HttpContext.Current.Server.MapPath(@"\iCal\");
    filePath = path + subject + ".ics";
    writer = new StreamWriter(filePath);
    writer.WriteLine("BEGIN:VCALENDAR");
    writer.WriteLine("VERSION:2.0");
    writer.WriteLine("PRODID:-//hacksw/handcal//NONSGML v1.0//EN");
    writer.WriteLine("BEGIN:VEVENT");
    string startDateTime = GetFormatedDate(date)+"T"+GetFormattedTime(startTime);
    string endDateTime = GetFormatedDate(date) + "T" + GetFormattedTime(endTime);
    writer.WriteLine("DTSTART:" + startDateTime);
    writer.WriteLine("DTEND:" + endDateTime);
    writer.WriteLine("SUMMARY:" + subject);
    writer.WriteLine("LOCATION:" + location);
    writer.WriteLine("END:VEVENT");
    writer.WriteLine("END:VCALENDAR");
    writer.Close();
    return filePath;
   }

Daily Event

To send daily event, you need to send ICS file. This file looks like that:

SendAppointment/cal_day_event.png

I have made a simple UI using an Ajaxtoolkit CalendarExtender. Here, the user can select a different date from calendar and in case of day event creation, there is no need to time.

SendAppointment/day_event.png

Here is the code to create day event.

C#
public string MakeDayEvent
	(string subject, string location, DateTime startDate, DateTime endDate)
   {
    string filePath = string.Empty;
    string path = HttpContext.Current.Server.MapPath(@"\iCal\");
    filePath = path + subject + ".ics";
    writer = new StreamWriter(filePath);
    writer.WriteLine("BEGIN:VCALENDAR");
    writer.WriteLine("VERSION:2.0");
    writer.WriteLine("PRODID:-//hacksw/handcal//NONSGML v1.0//EN");
    writer.WriteLine("BEGIN:VEVENT");
    string startDay = "VALUE=DATE:" + GetFormatedDate(startDate);
    string endDay = "VALUE=DATE:" + GetFormatedDate(endDate);
    writer.WriteLine("DTSTART;" + startDay);
    writer.WriteLine("DTEND;" + endDay);
    writer.WriteLine("SUMMARY:" + subject);
    writer.WriteLine("LOCATION:" + location);
    writer.WriteLine("END:VEVENT");
    writer.WriteLine("END:VCALENDAR");
    writer.Close();
    return filePath;        
   }

The code to send mail with attachment is as follows:

C#
public void SendMail(string from, string to, 
	string subject, string body, Attachment attachment)
   {
    MailMessage mail = new MailMessage(from, to, subject, body);
    mail.Attachments.Add(attachment);
    SmtpClient smtp = new SmtpClient("localhost");
    smtp.Send(mail);
    mail.Dispose();
   }

The complete code of that tool is available in the code folder. Please download and try with that.

History

  • Version-1 of that small tool

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)