【问题标题】:ics file not recognized by outlookOutlook 无法识别 ics 文件
【发布时间】:2011-08-03 14:39:39
【问题描述】:

我有一些问题。 我正在尝试发送一个 ics 文件,以便 Outlook 用户可以在他的日历中添加该事件。在某些版本中,例如 2010,它运行良好(家庭版),但在某些版本(例如商业版)中,它不能直接识别。您必须双击内容才能预览它。 在另一个版本中,它会在我单击邮件时立即显示日历选项。

我做错了什么?

这是日历的代码。

$str="BEGIN:VCALENDAR\r\n
PRODID:-//Microsoft Corporation//Outlook 14.0 MIMEDIR//EN\r\n
VERSION:2.0\r\n
METHOD:REQUEST\r\n
X-MS-OLK-FORCEINSPECTOROPEN:TRUE\r\n
BEGIN:VTIMEZONE\r\n
TZID:GTB Standard Time\r\n
BEGIN:STANDARD\r\n
DTSTART:16011028T000000\r\n
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10\r\n
TZOFFSETFROM:+0300\r\n
TZOFFSETTO:+0200\r\n
END:STANDARD\r\n
BEGIN:DAYLIGHT\r\n
DTSTART:16010325T000000\r\n
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3\r\n
TZOFFSETFROM:+0200\r\n
TZOFFSETTO:+0300\r\n
END:DAYLIGHT\r\n
END:VTIMEZONE\r\n
BEGIN:VEVENT\r\n
ATTENDEE;CN=silvian.iosub@gmail.com;RSVP=
 TRUE:mailto:silvian.iosub@gmail.com\r\n
CLASS:PUBLIC\r\n
CREATED:20110803T133418Z\r\n
DTEND:$endtime_ics\r\n
DTSTAMP:20110803T095605Z\r\n
DTSTART:$starttime_ics\r\n
LAST-MODIFIED:20110803T133418Z\r\n
ORGANIZER;CN=\"Silvian Iosub\":mailto:
 silvian.iosub@avira.com\r\n
PRIORITY:5\r\n
SEQUENCE:0\r\n
SUMMARY;LANGUAGE=ro:New Event\r\n
TRANSP:OPAQUE\r\n
UID:".MD5(TIME())."-85d2-69b00dea0ad4\r\n
X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE\r\n
X-MICROSOFT-CDO-IMPORTANCE:1\r\n
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY\r\n
X-MICROSOFT-DISALLOW-COUNTER:FALSE\r\n
X-MS-OLK-AUTOSTARTCHECK:FALSE\r\n
X-MS-OLK-CONFTYPE:0\r\n
BEGIN:VALARM\r\n
TRIGGER:-PT15M\r\n
ACTION:DISPLAY\r\n
DESCRIPTION:Reminder\r\n
END:VALARM\r\n
END:VEVENT\r\n
END:VCALENDAR\r\n";

我正在使用 swift 类发送电子邮件;以下是设置:

$attachment = Swift_Attachment::newInstance()
                            ->setFilename("Invitatie.ics")
                            ->setContentType('text/calendar;method=REQUEST;charset=UTF-8;')
                            ->setBody($str)
                ->setDisposition("inline,filename=".$confDesc.".ics");
        $message2->attach($attachment);

【问题讨论】:

  • 双击的要求与文件内容关系不大。这肯定是客户端设置。
  • 你可能需要输出一个header('Content-type: text/calendar'),因为ICS文件只是纯文本,它恰好包含日历数据。

标签: php outlook outlook-addin icalendar


【解决方案1】:

确保你添加了这个标题:

Content-Type:multipart/alternative

然后是 ics 文件部分:

Content-Type: text/calendar; charset="utf-8"; name="testcal.ics" method=REQUEST'."\r\n";
Content-Disposition: inline; filename="testcal.ics"'."\r\n";

注意:\r\n 必须在双引号之间

【讨论】:

    【解决方案2】:

    DTEND:$endtime_ics\r\n
    

    实际输出结束时间还是缺少一些语法?

    还可以尝试在以下位置验证 ics 文件 http://severinghaus.org/projects/icv/

    【讨论】:

      猜你喜欢
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 2019-11-23
      • 2014-10-29
      • 2023-03-10
      • 1970-01-01
      • 2018-02-15
      相关资源
      最近更新 更多