【问题标题】:Delete An Outlook Appointment Created Using C# And Updating Category of Outlook删除使用 C# 创建的 Outlook 约会并更新 Outlook 类别
【发布时间】:2012-07-11 08:34:23
【问题描述】:

我使用以下代码创建了约会:

MailMessage mmMessage = new MailMessage();
System.Net.Mime.ContentType typeCalendar = new System.Net.Mime.ContentType("text/calendar");

//  Add parameters to the calendar header
typeCalendar.Parameters.Add("method", "REQUEST");
typeCalendar.Parameters.Add("name", "meeting.ics");

//Create the Body in VCALENDAR format  
string strCalDateFormat = "yyyyMMddTHHmmssZ";
string strBodyCalendar = "BEGIN:VCALENDAR\r\nMETHOD:REQUEST\r\nPRODID:Microsoft CDO for Microsoft Exchange\r\nVERSION:2.0\r\nBEGIN:VTIMEZONE\r\nTZID:(GMT-06.00) Central Time (US & Canada)\r\nX-MICROSOFT-CDO-TZID:11\r\nBEGIN:STANDARD\r\nDTSTART:16010101T020000\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nRRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nDTSTART:16010101T020000\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nRRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nEND:VTIMEZONE\r\nBEGIN:VEVENT\r\nDTSTAMP:{8}\r\nDTSTART:{0}\r\nSUMMARY:{7}\r\nUID:{5}\r\nATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=\"{9}\":MAILTO:{9}\r\nACTION;RSVP=TRUE;CN=\"{4}\":MAILTO:{4}\r\nORGANIZER;CN=\"{3}\":mailto:{4}\r\nLOCATION:{2}\r\nDTEND:{1}\r\nDESCRIPTION:{7}\\N\r\nSEQUENCE:{10}\r\nPRIORITY:5\r\nCLASS:\r\nCREATED:{8}\r\nLAST-MODIFIED:{8}\r\nSTATUS:CONFIRMED\r\nTRANSP:OPAQUE\r\nX-MICROSOFT-CDO-BUSYSTATUS:BUSY\r\nX-MICROSOFT-CDO-INSTTYPE:0\r\nX-MICROSOFT-CDO-INTENDEDSTATUS:BUSY\r\nX-MICROSOFT-CDO-ALLDAYEVENT:FALSE\r\nX-MICROSOFT-CDO-IMPORTANCE:1\r\nX-MICROSOFT-CDO-OWNERAPPTID:-1\r\nX-MICROSOFT-CDO-ATTENDEE-CRITICAL-CHANGE:{8}\r\nX-MICROSOFT-CDO-OWNER-CRITICAL-CHANGE:{8}\r\nBEGIN:VALARM\r\nACTION:DISPLAY\r\nDESCRIPTION:REMINDER\r\nTRIGGER;RELATED=START:-PT00H15M00S\r\nEND:VALARM\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";

string strUID = Session["ApptID"].ToString() + "@youremailaddress.com";
strBodyCalendar = string.Format(strBodyCalendar, dtStart.ToUniversalTime().ToString(strCalDateFormat), dtEnd.ToUniversalTime().ToString(strCalDateFormat), strLocation, strOrganizerName, strOrganizerEmail, strUID, strSummary, strSubject,DateTime.Now.ToUniversalTime().ToString(strCalDateFormat), macAttendeeList.ToString(),0);

AlternateView viewCalendar = AlternateView.CreateAlternateViewFromString(strBodyCalendar, typeCalendar);
viewCalendar.TransferEncoding = TransferEncoding.SevenBit;

mmMessage.AlternateViews.Add(viewCalendar);

请指导我如何删除使用上述代码创建的约会。

现在使用类似的主体,即 strBodyCalendar,我必须从 c# 代码本身更新 Outlook 的类别。

我正在通过 \r\nCATEGORIES:MEETING 并且我在我的 OUTLOOK 中以蓝色定义了 MEETING 类别。

还是在添加约会后,颜色或类别没有更新。

感谢您的帮助。

请指导。

【问题讨论】:

  • 看起来这段代码创建了一封带有附加日历事件的电子邮件,这与将事件添加到日历不同。要删除约会,您不需要与您添加附加日历事件的日历交互吗?
  • 您正在创建包含 Outlook 将在收件人日历中显示的会议请求的邮件,您最多可以取消该请求(或发送会议已取消的更新)但我认为这不会自动删除该事件。有关更多信息,您应该查看 iTIP RFC (ietf.org/rfc/rfc2446.txt),您可能会在那里找到所需的内容。
  • 是否可以将 guid 存储在用于创建请求的数据库中的某个位置,并且通过任何方式比较存储的 guid 将是删除 Outlook 中特定约会的方法???

标签: c# asp.net outlook outlook-2007 mailmessage


【解决方案1】:

当您使用 Vcalendar 制定约会时,

您需要更改以下属性

  1. 方法:取消

  2. UID 应与您在创建约会时提供的相同。

  3. 顺序应该相同。

  4. 状态应从已确认更改为已取消。

如果您需要任何相关帮助,请在下方粘贴您的 Vcalendar 代码。

【讨论】:

  • 这将取消但不会删除/删除会议。
【解决方案2】:
Microsoft.Office.Interop.Outlook.Application OlApp = new 
Microsoft.Office.Interop.Outlook.Application();
NameSpace OlNamspace = OlApp.GetNamespace("MAPI");
MAPIFolder AppointmentFolder = 
OlNamspace.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);

Items calendarItems = AppointmentFolder.Items;

AppointmentItem item = calendarItems["Subject/Item Name"] as 
AppointmentItem;

item.Delete();
MessageBox.Show("Calendar event has been deleted.");

【讨论】:

  • 此代码只是提供约会名称删除约会。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多