C# 中通过 MailMessage 取消 Outlook 会议请求
我正在使用 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 中收到电子邮件时,它会显示为会议请求,而不是普通电子邮件。
这也适用于发送会议请求的更新。我遇到的唯一问题是我不知道发送取消的正确格式。我尝试在文本编辑器中检查一些会议请求取消,但似乎无法确定取消/创建之间的格式差异。
非常感谢对此的任何帮助。
I'm creating an application using the ASP.NET MVC 1 framework in C#, where I have users that register for events. Upon registering, I create an outlook meeting request
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();
}
And once built, I use MailMessage, with an alternate view to send out the meeting request:
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);
When users get the email in outlook, it shows up as a meeting request, as opposed to a normal email.
This works well for sending out updates to the meeting request as well. The only problem that I am having is that I do not know the proper format for sending out a cancellation. I've attempted to examine some meeting request cancellations in text editors and can't seem to pinpoint the difference in the format between cancelling/creating.
Any help on this is greatly appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据 RFC 2445 你只需要设置
STATUS:CANCELLED
According to RFC 2445 you just need to set
STATUS:CANCELLED