read office c# asp.net outlook

c# - office - outlook oauth2



Enviar una solicitud de reuniĆ³n de Outlook con C# (2)

No, no se puede hacer. Esto sería un agujero de seguridad.

La reunión debe ser aceptada por el usuario (de forma manual o no) para que se muestre como Ocupado.

Estoy buscando enviar una solicitud de reunión de Outlook desde C #. tengo el siguiente código que hace el trabajo, pero.

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);

cuando se envía la invitación, es necesario que el usuario acepte la invitación, y cuando el usuario acepta la invitación, el calendario de Outlook muestra el estado como OCUPADO
¿Hay alguna forma de enviar la invitación que no requiera que el usuario la acepte y el calendario de Outlook se muestre como Fuera de la oficina? Lo he intentado con esta 2 parte pero sin suerte

str.AppendLine("ACTION:Accept"); str.AppendLine("X-MICROSOFT-CDO-BUSYSTATUS:BUSY");


Si se trata de un buzón de recursos, puede configurarlo para que acepte automáticamente las invitaciones a reuniones (Archivo | Opciones | Calendario | Aceptar automáticamente o Rechazar).

Si se trata de un buzón arbitrario, no ocurre nada sin el permiso del propietario. Lo mejor que puede hacer es acceder directamente al buzón utilizando el Modelo de objetos de Outlook / EWS / MAPI si tiene las credenciales del usuario.