2012-07-11 50 views
3

我曾嘗試使用下面的代碼創建約會的更新類別:刪除Outlook約會創建使用C#和展望

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中以BLUE顏色定義了MEETING類別。

仍然在添加約會之後,顏色或類別不會更新。

謝謝你的幫助。

請指導。

+1

它看起來像這個代碼創建一個附帶日曆事件的電子郵件,這不同於將事件添加到日曆。要刪除約會,是否需要與添加附加日曆活動的日曆進行交互? – neontapir 2012-07-11 18:58:00

+0

您正在創建一個包含Outlook將在接收者日曆中顯示的會議請求的郵件消息,最好您可能能夠取消該請求(或發送會議已被取消的更新),但我不認爲將自動刪除該事件。欲瞭解更多信息,你應該看看iTIP RFC(http://www.ietf.org/rfc/rfc2446.txt),你可能會發現你需要的東西。 – 2012-07-11 20:25:00

+0

是否有可能將guid的某處存儲在用於創建請求的數據庫中,並通過比較存儲的guid的任何方式來刪除outlook中的特定約會? – 2012-07-12 14:45:53

回答

2

當你在取景使用電子日曆約會,

您需要更改下面的屬性

  1. 方法:取消

  2. UID應該是相同的,你在創建約會提供。

  3. 序列應該是相同的。

  4. 狀態應該從確認更改爲取消。

如果您需要與此相同的任何幫助,請在下面粘貼您的Vcalendar代碼。

+0

這將取消但不刪除/刪除會議。 – TPAKTOPA 2017-11-30 18:24:20