通过 C# 中的 MailMessage 取消 Outlook 会议请求
Posted
技术标签:
【中文标题】通过 C# 中的 MailMessage 取消 Outlook 会议请求【英文标题】:Cancel outlook meeting requests via MailMessage in C# 【发布时间】:2011-02-08 22:19:57 【问题描述】:我正在使用 C# 中的 ASP.NET MVC 1 框架创建一个应用程序,其中有注册事件的用户。注册后,我创建了一个 Outlook 会议请求
public string BuildMeetingRequest(DateTime start, DateTime end, string attendees, string organizer, string subject, string description, string UID, string location)
System.Text.StringBuilder sw = new System.Text.StringBuilder();
sw.AppendLine("BEGIN:VCALENDAR");
sw.AppendLine("VERSION:2.0");
sw.AppendLine("METHOD:REQUEST");
sw.AppendLine("BEGIN:VEVENT");
sw.AppendLine(attendees);
sw.AppendLine("CLASS:PUBLIC");
sw.AppendLine(string.Format("CREATED:0:yyyyMMddTHHmmssZ", DateTime.UtcNow));
sw.AppendLine("DESCRIPTION:" + description);
sw.AppendLine(string.Format("DTEND:0:yyyyMMddTHHmmssZ", end));
sw.AppendLine(string.Format("DTSTAMP:0:yyyyMMddTHHmmssZ", DateTime.UtcNow));
sw.AppendLine(string.Format("DTSTART:0:yyyyMMddTHHmmssZ", start));
sw.AppendLine("ORGANIZER;CN=\"NAME\":mailto:" + organizer);
sw.AppendLine("SEQUENCE:0");
sw.AppendLine("UID:" + UID);
sw.AppendLine("LOCATION:" + location);
sw.AppendLine("SUMMARY;LANGUAGE=en-us:" + subject);
sw.AppendLine("BEGIN:VALARM");
sw.AppendLine("TRIGGER:-PT720M");
sw.AppendLine("ACTION:DISPLAY");
sw.AppendLine("DESCRIPTION:Reminder");
sw.AppendLine("END:VALARM");
sw.AppendLine("END:VEVENT");
sw.AppendLine("END:VCALENDAR");
return sw.ToString();
一旦构建完成,我就使用 MailMessage,并使用备用视图发送会议请求:
meetingInfo = BuildMeetingRequest(start, end, attendees, organizer, subject, description, UID, location);
System.Net.Mime.ContentType mimeType = new System.Net.Mime.ContentType("text/calendar; method=REQUEST");
AlternateView ICSview = AlternateView.CreateAlternateViewFromString(meetingInfo,mimeType);
MailMessage message = new MailMessage();
message.To.Add(to);
message.From = new MailAddress(from);
message.AlternateViews.Add(ICSview);
SmtpClient client = new SmtpClient();
client.Send(message);
当用户在 Outlook 中收到电子邮件时,它会显示为会议请求,而不是普通电子邮件。
这也适用于发送会议请求的更新。我遇到的唯一问题是我不知道发送取消的正确格式。我尝试在文本编辑器中检查一些会议请求取消,但似乎无法确定取消/创建之间的格式差异。
非常感谢您对此的任何帮助。
【问题讨论】:
【参考方案1】:根据RFC 2445只需要设置STATUS:CANCELLED
【讨论】:
这有所帮助,尽管当我在会议请求中仅使用该状态关键字时,Outlook 将其视为会议编辑。我设法通过添加 sw.AppendLine("METHOD:CANCEL"); 发送会议取消。 sw.AppendLine("状态:取消");另外,我需要为取消添加另一个 mime 类型 System.Net.Mime.ContentType mimeType = new System.Net.Mime.ContentType("text/calendar; method=CANCEL");谢谢。 @BTmuney 发送会议取消后,是否也将会议从日历中删除?我试过这个及其工作和发送取消,但它不会从 Outlook 的日历中删除现有会议。以上是关于通过 C# 中的 MailMessage 取消 Outlook 会议请求的主要内容,如果未能解决你的问题,请参考以下文章
可以在 C# 中的委托上传递 System.Net.Mail.MailMessage 对象吗?
在 C# 中使用不带 TO 的 BCC 通过 SMTP 发送邮件
C# MailMessage AlternateViews 显示 HTML 标签