我对Lotus Notes 8.5有一个奇怪的问题。在我的项目中,我正在向用户发送会议邀请。为此,我生成.ics文件。以下是我生成.ics文件的方法
var body = "Dear Raj, \n\n How are you? line break is not working \n\n how?";
using (TextWriter writer = File.CreateText("../test.ics"))
{
writer.WriteLine("BEGIN:VCALENDAR");
writer.WriteLine("PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN");
writer.WriteLine("VERSION:2.0");
writer.WriteLine("METHOD:REQUEST");
writer.WriteLine("BEGIN:VEVENT");
writer.WriteLine("ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:participant@company.com");
writer.WriteLine("ORGANIZER;CN="Organizer":MAILTO:organizer@test.ccc");
writer.WriteLine("(DTSTART:20141231T010000Z");
writer.WriteLine("DTEND:20141231T010000Z");
writer.WriteLine("TRANSP:OPAQUE");
writer.WriteLine("SEQUENCE:0");
writer.WriteLine("UID:Company-interview-123");
writer.WriteLine("DTSTAMP:20141223T232322Z");
writer.WriteLine("SUMMARY:Interview Scheduled for Job");
writer.WriteLine("DESCRIPTION:{0}", body.Replace("\n","<br />"));
//Adding below property actually fixed the issue.
writer.WriteLine("X-ALT-DESC;FMTTYPE=text/html:{0}", body.Replace("\n","<br />"));
writer.WriteLine("LOCATION:Test Location");
writer.WriteLine("PRIORITY:5");
writer.WriteLine("X-MICROSOFT-CDO-IMPORTANCE:1");
writer.WriteLine("CLASS:PUBLIC");
writer.WriteLine("BEGIN:VALARM");
writer.WriteLine("TRIGGER:-PT15M");
writer.WriteLine("ACTION:DISPLAY");
writer.WriteLine("DESCRIPTION:Reminder");
writer.WriteLine("END:VALARM");
writer.WriteLine("END:VEVENT");
writer.WriteLine("END:VCALENDAR");
}
但Lotus电子邮件客户端正在显示内容。 它的展示
Dear Raj, <br><br> How are you? line break is not working <br><br> how?
在所有其他电子邮件客户端上,我的内容显示为
Dear Raj,
How are you? line break is not working
how?
我在这里错过了什么吗?
更新了我的.ics代码以添加X-ALT-DESC; FMTTYPE = text / html:解决问题
答案 0 :(得分:1)
我刚刚使用包含Lotus Notes 8.5和IBM Notes 9中的Text的vcard进行了检查,它完全按预期工作。但是:它与您的“原始”文本一起使用而没有替换。在它所述的RFC2445中,必须将换行符编码为\ n:
故意格式化的文本换行必须只包含在a中 “TEXT”属性值通过表示换行符 BACKSLASH的字符序列(US-ASCII十进制92),后跟一个 拉丁文小写字母N(US-ASCII十进制110)或拉丁文大写字母 N(US-ASCII十进制78),即“\ n”或“\ N”。
这意味着:使用
writer.WriteLine("DESCRIPTION:{0}", body);
而不是
writer.WriteLine("DESCRIPTION:{0}", body.Replace("\n","<br>"));
你的问题应该解决
答案 1 :(得分:0)
DESCRIPTION属性不包含任何富文本/ html内容,只包含纯文本。
Lotus Notes可能会使用其他一些属性(X-属性)来传达富文本描述。或者它可以在DESCRIPTION上使用ALTREP参数,该参数指向邀请中的另一个MIME bodypart。见http://tools.ietf.org/html/rfc5545#section-3.2.1
因此,您可能要做的是将包含Lotus Notes的富文本的邀请发送到某个外部帐户,然后查看您收到的MIME消息是什么样的。