如何格式化邀请,以便它们在Outlook和IBM Notes中正常运行

时间:2015-03-16 09:42:31

标签: email outlook lotus-notes icalendar

我们的C#应用​​程序使用System.Net.Mail.SmtpClient发送电子邮件邀请。我们曾经以一种在Microsoft Outlook中看起来合适的方式使用HTML格式化它们。现在他们也必须在IBM Notes中工作。

然而,Notes似乎拒绝任何在邀请中设置任何样式的尝试。它从HTML中提取文本部分,并将它们作为无格式文本放入其描述字段中。

我们的实施使用text/calendar ALT-REP引用和两个替代视图:

ContentType contentType = new ContentType("text/html; charset=UTF-8");
AlternateView alternateView = AlternateView.CreateAlternateViewFromString(descriptionContent, contentType);
message.AlternateViews.Add(alternateView);

contentType = new ContentType("text/calendar; method=REQUEST; charset=UTF-8");
contentType.Parameters.Add("Content-Class", "urn:content-classes:calendarmessage");
alternateView = AlternateView.CreateAlternateViewFromString(invitationContent, contentType);
message.AlternateViews.Add(alternateView);

descriptionContent是HTML格式的内容。

invitationContent

StringBuilder builder = new StringBuilder();
builder.Append("BEGIN:VCALENDAR\r\n");
builder.Append("PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN\r\n");
builder.Append("VERSION:2.0\r\n");
builder.Append("METHOD:REQUEST\r\n");
builder.Append("BEGIN:VEVENT\r\n");
builder.Append("ORGANIZER;CN=\"The Full Name\":MAILTO:the-to-address@example.org\r\n");
builder.Append("SUMMARY;CHARSET=iso-8859-1;LANGUAGE=de-ch:Some Title\r\n");
builder.Append("DTSTART:" + String.Format("{0:yyyyMMdd'T'HHmm'00'}", invitationStart) + "\r\n");
builder.Append("DTEND:" + String.Format("{0:yyyyMMdd'T'HHmm'00'}", invitationEnd) + "\r\n");
builder.Append("LOCATION;CHARSET=iso-8859-1:Some address\r\n");
builder.Append("UID:" + Guid.NewGuid().ToString().ToUpper() + "\r\n");
builder.Append("DTSTAMP:" + String.Format("{0:yyyyMMdd'T'HHmm'00'}", DateUtil.GetToday()) + "\r\n");
builder.Append("DESCRIPTION;ALTREP=\"CID:<eventDescriptionHTML>\"\r\n");
builder.Append("BEGIN:VALARM\r\n");
builder.Append("TRIGGER:-PT15M\r\n");
builder.Append("ACTION:DISPLAY\r\n");
builder.Append("DESCRIPTION:Reminder\r\n");
builder.Append("END:VALARM\r\n");
builder.Append("END:VEVENT\r\n");
builder.Append("END:VCALENDAR");

例如,使用descriptionContent

...
<h1>A title</h1>
<h2>A subtitle</h2>
<p>A paragraph</p>
...

这将在MS Outlook中显示,但在Notes中,邀请说明包含一个简单的“A title A subtitle A paragraph”文本。

1 个答案:

答案 0 :(得分:-1)

您可以从Notes客户端的Notes日历中将Notes日历条目导出为ICS格式。

使用您想要的说明创建邀请,导出并检查.ics以查看您需要添加到代码中的内容