Lotus注意电子邮件客户端无法呈现<br/>标签吗?

时间:2015-05-08 11:55:56

标签: c# lotus-notes icalendar

我对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:解决问题

2 个答案:

答案 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消息是什么样的。