title: Send an Outlook Meeting Request with C#
body: <p>I am looking to send an outlook Meeting Request from C#.
  i have the code below that it do the job but.</p>
  
  <pre><code>string startTime1 = Convert.ToDateTime(startTime).ToString("yyyyMMddTHHmmssZ");
  string endTime1 = Convert.ToDateTime(endTime).ToString("yyyyMMddTHHmmssZ");
  SmtpClient sc = new SmtpClient("");
  
  MailMessage msg = new MailMessage();
  
  msg.From = new MailAddress("", "HR Self Service");
  msg.To.Add(new MailAddress(emailto));
  msg.Subject = "Holiday Approval";
  msg.Body = emailbody;
  
  StringBuilder str = new StringBuilder();
  str.AppendLine("BEGIN:VCALENDAR");
  
  //PRODID: identifier for the product that created the Calendar object
  str.AppendLine("PRODID:-//ABC Company//Outlook MIMEDIR//EN");
  str.AppendLine("VERSION:2.0");
  str.AppendLine("METHOD:REQUEST");
  
  str.AppendLine("BEGIN:VEVENT");
  
  str.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", startTime1));//TimeZoneInfo.ConvertTimeToUtc("BeginTime").ToString("yyyyMMddTHHmmssZ")));
  str.AppendLine(string.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", DateTime.UtcNow));
  str.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", endTime1));//TimeZoneInfo.ConvertTimeToUtc("EndTime").ToString("yyyyMMddTHHmmssZ")));
  str.AppendLine(string.Format("LOCATION: {0}", "Location"));
  
  // UID should be unique.
  str.AppendLine(string.Format("UID:{0}", Guid.NewGuid()));
  str.AppendLine(string.Format("DESCRIPTION:{0}", msg.Body));
  str.AppendLine(string.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", msg.Body));
  str.AppendLine(string.Format("SUMMARY:{0}", msg.Subject));
  
  str.AppendLine("STATUS:CONFIRMED");
  str.AppendLine("BEGIN:VALARM");
  str.AppendLine("TRIGGER:-PT15M");
  str.AppendLine("ACTION:Accept");
  str.AppendLine("DESCRIPTION:Reminder");
  str.AppendLine("X-MICROSOFT-CDO-BUSYSTATUS:BUSY");
  str.AppendLine("END:VALARM");
  str.AppendLine("END:VEVENT");
  
  str.AppendLine(string.Format("ORGANIZER:MAILTO:{0}", msg.From.Address));
  str.AppendLine(string.Format("ATTENDEE;CN=\"{0}\";RSVP=TRUE:mailto:{1}", msg.To[0].DisplayName, msg.To[0].Address));
  
  str.AppendLine("END:VCALENDAR");
  System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType("text/calendar");
  ct.Parameters.Add("method", "REQUEST");
  ct.Parameters.Add("name", "meeting.ics");
  AlternateView avCal = AlternateView.CreateAlternateViewFromString(str.ToString(), ct);
  msg.AlternateViews.Add(avCal);
  //Response.Write(str);
  // sc.ServicePoint.MaxIdleTime = 2;
  sc.Send(msg);
  </code></pre>
  
  <p>when the invitation is send, it need the user to <strong>accept</strong> the invitation, and when the user accept the invitation, Outlook calendar shows the status as <strong>BUSY</strong><br>
  is there any way to send the invitation that does not require user to accept it and the Outlook calendar shows as Out Of Office ?
  i have tried with this 2 part but no luck</p>
  
  <pre><code>str.AppendLine("ACTION:Accept");
  str.AppendLine("X-MICROSOFT-CDO-BUSYSTATUS:BUSY");
  </code></pre>