我正在用C#创建一个应用程序。在此我可以创建一个会议请求,通过代码发送给用户并显示在Outlook邮件中。
以下代码是我用来发送会议邀请的代码。它工作正常。
StringBuilder OutlookBody = new StringBuilder();
string textvs = @"BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN
VERSION:1.0
BEGIN:VEVENT
LOCATION:" + Location + @"
DTSTART:" + string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", start) + @"
DTEND:" + string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", end) + @"
DESCRIPTION;ENCODING=QUOTED-PRINTABLE:= " + OutlookBody + @"=0D=0A SUMMARY:" + AppoitmentName + @"
PRIORITY:3
END:VEVENT
END:VCALENDAR";
如何使用相同的代码删除Outlook会议请求。
我还检查了this回答,但它没有解决我的问题。
答案 0 :(得分:2)
在OutLook中,每个约会/会议都将获得唯一的ID和ChangeKey。只要对会议进行了修改,就会生成新的ChangeKey。要更新现有会议,您必须拥有Id和最新的ChangeKey。
在你的方法中,如果我没有错,你只是在构建一个通过电子邮件添加到outlook中的ICAL。在这种情况下,您将无法使用Id和ChangeKey以编程方式修改会议。我宁愿建议你改变方法。
如果您有Microsoft Exchange,则会指导以下链接。否则,请忽略链接。
https://msdn.microsoft.com/en-us/library/office/dn495611(v=exchg.150).aspx https://msdn.microsoft.com/en-us/library/office/dn495612(v=exchg.150).aspx
答案 1 :(得分:2)
答案 2 :(得分:0)
使用以下代码
active
并使用以下Mime类型
StringBuilder OutlookBody = new StringBuilder();
string textvs = @"BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN
VERSION:1.0
BEGIN:VEVENT
LOCATION:" + Location + @"
DTSTART:" + string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", start) + @"
DTEND:" + string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", end) + @"
DESCRIPTION;ENCODING=QUOTED-PRINTABLE:= " + OutlookBody + @"=0D=0A SUMMARY:" + AppoitmentName + @"
PRIORITY:3
METHOD:CANCEL
STATUS:CANCELLED
END:VEVENT
END:VCALENDAR";
答案 3 :(得分:0)
我通过更改代码中的某些行解决了这个问题。
将方法从REQUEST
更改为CANCEL
==> str.AppendLine("METHOD:CANCEL");
将Status
更改为Cancelled
==> str.AppendLine("STATUS:CANCELLED");
在System.Net.Mime.ContentType contype = newSystem.Net.Mime.ContentType("text/calendar");
中,将方法从REQUEST
更改为CANCEL
==> contype.Parameters.Add("method", "CANCEL");