Click here to Skip to main content
Click here to Skip to main content

Send appointment through email in ASP.NET

, 20 Nov 2012
Rate this:
Please Sign up or sign in to vote.
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:

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.

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:

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)

Share

About the Author

Ashrafur Rahaman
Software Developer (Senior)
Canada Canada
Software engineer with broad experience in enterprise application development, product deployment automation, software test & test automation, application & system management, and manage big projects and team using proven agile technologies.
 
Passionate on Microsoft technologies, developed solutions using C#, .net (1.1/2.0/3.5/4), SQL Server (2005/2008). Work on Powershell, SSRS, SSIS, WPF, Ajax, WCF, JQuery.
 
Develop innovative application with cutting edge technologies always boosting inside.

Comments and Discussions

 
QuestionFailure sending SMTP mail PinmemberSanket Ambre13-Aug-14 18:44 
QuestionFailure sending mail : smtp.Send(mail); PinmemberAulia Rahmawati16-Jun-14 22:14 
QuestionCould not load file or assembly Pinmembermirzanaumanbaig12-May-14 22:34 
AnswerRe: Could not load file or assembly Pinmembermirzanaumanbaig13-May-14 0:18 
GeneralMy vote of 5 Pinmembercsharpbd20-Nov-12 19:26 
GeneralMy vote of 5 PinmemberAbdulMuheet20-Nov-12 15:59 
QuestionSmtpClient smtp = new SmtpClient("localhost"); Error Pinmemberkarthikeyanjothi18-Oct-12 4:29 
QuestionHow to send this remainder automatically into gmail calender Pinmembervijay.vangaveti112-Feb-12 18:53 
QuestionThanks Million Pinmemberbellay18-Jun-11 10:15 
GeneralFailed to Map path PinmemberHaridass28-May-11 3:19 
GeneralAppointment with color background depending on condition Pinmembersonashish9-Dec-09 6:00 
Ashraf
 
Is there any way to add appointment in color depending on condition?
 
We have an priority field which contains High/Medium/Low, I used your beutiful code in my application successfully and adding appointment without any problem. Now I want to add this appoint with color background or colored font, How can I achieve this?
 
Secondly is there any way to add appointment automatically added in outlook calendar without clicking on ics file?
 
Again thanks for sharing the code.
 
Ashu
Answerthis is other way send the appointment without attach it PinmemberAhmed Abu Dagga20-May-09 19:05 
GeneralFailed to map the path '/iCal/'. Pinmemberabhinash.b25-Sep-08 20:24 
QuestionHow to embade it in mail? PinmemberDanko Greiner9-Sep-08 22:50 
Generalproblem with \iCal\ PinmemberMember 26213921-Sep-08 6:09 
GeneralRe: problem with \iCal\ PinmemberHaridass27-May-11 20:04 
GeneralFailed to map the path '/iCal/'. PinmemberMember 26213921-Sep-08 6:06 
GeneralAjax Problem Pinmemberdanielle661011-Jun-08 23:13 
GeneralRe: Ajax Problem Pinmemberdanielle661011-Jun-08 23:39 
GeneralRe: Ajax Problem PinmemberAshrafur Rahaman11-Jun-08 23:50 
Generalthanks! PinmemberRochelle Velasquez-Macazo29-Apr-08 15:06 
GeneralRe: thanks! PinmemberAshrafur Rahaman29-Apr-08 20:38 
GeneralVery Nice PinmemberBGaddis1-Apr-08 3:03 
GeneralRe: Very Nice PinmemberAshrafur Rahaman1-Apr-08 4:55 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web01 | 2.8.140814.1 | Last Updated 20 Nov 2012
Article Copyright 2008 by Ashrafur Rahaman
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid