Working with SharePoint workflow I got a requirement to send
meeting request by using the code. I have dig into deep to check if there is
any option to send meeting requests by using SharePoint workflow but I couldn’t
find anything. So we have only option to send meeting request through C# code.
My friend Ravi helped me on the code finally by using the
code below we are able to send the meeting requests.
private void
SendMeetingRequestMail(VacationRequestMail reqMail, string smtpTO, string
smtpServer, string smtpFrom)
{
using (MailMessage mailMessage = new
MailMessage(smtpFrom, smtpTO))
{
mailMessage.Subject = “Subject”;
mailMessage.Body = “Body”;
DateTime startDate = “Start Date and Time”
DateTime endDate = “End Date and Time”
StringBuilder str = new StringBuilder();
str.AppendLine("BEGIN:VCALENDAR");
str.AppendLine("PRODID:-//Vacation
Request Portal");
str.AppendLine("VERSION:2.0");
str.AppendLine("METHOD:REQUEST");
str.AppendLine("BEGIN:VEVENT");
str.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}",
startDate));
str.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmssZ}",
endDate));
str.AppendLine("LOCATION:
Vacation Request Portal, India");
str.AppendLine(string.Format("X-MICROSOFT-CDO-ALLDAYEVENT:TRUE"));
str.AppendLine(string.Format("UID:{0}",
Guid.NewGuid()));
str.AppendLine(string.Format("DESCRIPTION:{0}",
mailMessage.Body));
str.AppendLine(string.Format("X-ALT-DESC;FMTTYPE=text/html:{0}",
mailMessage.Body));
str.AppendLine(string.Format("SUMMARY:{0}",
mailMessage.Subject));
str.AppendLine(string.Format("ORGANIZER:MAILTO:{0}",
mailMessage.From.Address));
str.AppendLine("X-MICROSOFT-CDO-BUSYSTATUS:FREE");
str.AppendLine("BEGIN:VALARM");
str.AppendLine("TRIGGER:-PT18H");
str.AppendLine("ACTION:DISPLAY");
str.AppendLine("DESCRIPTION:Reminder");
str.AppendLine("END:VALARM");
str.AppendLine("END:VEVENT");
str.AppendLine("END:VCALENDAR");
System.Net.Mime.ContentType ct
= new System.Net.Mime.ContentType("text/calendar");
ct.Parameters.Add("method",
"REQUEST");
AlternateView avCal = AlternateView.CreateAlternateViewFromString(str.ToString(),
ct);
mailMessage.AlternateViews.Add(avCal);
using (SmtpClient smtpClient = new
SmtpClient(smtpServer))
{
smtpClient.Send(mailMessage);
}
}
}
We have multiple options while sending meeting requests. For
example “X-MICROSOFT-CDO-BUSYSTATUS:FREE” will set the user state to free even
user accept the meeting request. Hope this will help.