簡體   English   中英

Outlook 未在 ics 文件中導入多個事件

[英]Outlook not importing multiple events in an ics file

我有一個生成的 iCal 文件的問題。

它似乎正確生成了代碼,並且 .ics 文件加載了多個事件,但是當我在 Outlook 中打開文件時,它只將第一個事件導入到我的日歷中,其余的沒有添加。

這是生成的 iCal 文件

BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN
VERSION:2.0
METHOD:PUBLISH
X-WR-CALNAME: Calendar
CALSCALE:GREGORIAN
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VTIMEZONE
TZID:Europe/London
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19810329T010000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19961027T020000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
TZNAME:GMT
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTART:20140906T090000
DTEND:20140906T170000
UID:224
DTSTAMP:20140721T102908
LOCATION:
DESCRIPTION:Explore the College with current students\, chat with the Director of Studies in your subject\, meet our admissions tutors\,
URL;VALUE=URI:http://www.domain.com/events-224
SUMMARY:Open Day (undergraduate)
END:VEVENT
BEGIN:VEVENT
DTSTART:20141208T000000
DTEND:20141212T000000
UID:416
DTSTAMP:20140721T102908
LOCATION:
DESCRIPTION:Admissions Interviews
URL;VALUE=URI:http://www.domain.com/events-416
SUMMARY:Admissions Interviews
END:VEVENT
BEGIN:VEVENT
DTSTART:20141215T000000
DTEND:20141218T000000
UID:417
DTSTAMP:20140721T102908
LOCATION:
DESCRIPTION:Admissions Interviews
URL;VALUE=URI:http://www.domain.com/events-417
SUMMARY:Admissions Interviews
END:VEVENT
BEGIN:VEVENT
DTSTART:20150112T000000
DTEND:20150116T000000
UID:419
DTSTAMP:20140721T102908
LOCATION:
DESCRIPTION:Admissions Interviews
URL;VALUE=URI:http://www.domain.com/events-419
SUMMARY:Admissions Interviews
END:VEVENT
BEGIN:VEVENT
DTSTART:20150314T000000
DTEND:20150314T000000
UID:67
DTSTAMP:20140721T102908
LOCATION:
DESCRIPTION:Explore the College with current students\, chat with the Director of Studies in your subject and meet our admissions tutors. 

URL;VALUE=URI:http://www.domain.com/events-67
SUMMARY:Admissions Open Day (Arts)
END:VEVENT
BEGIN:VEVENT
DTSTART:20150425T000000
DTEND:20150425T000000
UID:73
DTSTAMP:20140721T102908
LOCATION:
DESCRIPTION:Explore the College with current students\, chat with the Director of Studies in your subject and meet our admissions tutors.
URL;VALUE=URI:http://www.domain.com/events-73
SUMMARY:Admissions Open Day (Sciences)
END:VEVENT
END:VCALENDAR

以下是設置iCal文件頁眉頁腳的變量

$iCalHeader = "" .
        "BEGIN:VCALENDAR\n" .
        "PRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN\n" .
        "VERSION:2.0\n" .
        "METHOD:PUBLISH\n";

    $iCalHeaderBottom = "CALSCALE:GREGORIAN\n" .
        "X-MS-OLK-FORCEINSPECTOROPEN:TRUE\n" .
        "BEGIN:VTIMEZONE\n" .
        "TZID:Europe/London\n" .
        "BEGIN:DAYLIGHT\n" .
        "TZOFFSETFROM:+0000\n" .
        "TZOFFSETTO:+0100\n" .
        "DTSTART:19810329T010000\n" .
        "RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\n" .
        "TZNAME:BST\n" .
        "END:DAYLIGHT\n" .
        "BEGIN:STANDARD\n" .
        "TZOFFSETFROM:+0100\n" .
        "TZOFFSETTO:+0000\n" .
        "DTSTART:19961027T020000\n" .
        "RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\n" .
        "TZNAME:GMT\n" .
        "END:STANDARD\n" .
        "END:VTIMEZONE\n";

    $iCalFooter = "END:VCALENDAR";

最后是生成事件的代碼

$iCal .= "BEGIN:VEVENT\n".
                "DTSTART:" . date('Ymd\THis', strtotime($row2["EVENT_StartDateTime"])) ."\n".
                "DTEND:" . date('Ymd\THis', strtotime($row2["EVENT_EndDateTime"])) . "\n".
                "UID:" . $row2["EVENT_ID"] . "\n".
                "DTSTAMP:" . date('Ymd\THis', time()) . "\n".
                "LOCATION:$address\n".
                "DESCRIPTION:" . $this->escapeString($description) . "\n".
                "URL;VALUE=URI:http://www.domain.com/events-" . $row2["EVENT_ID"] . "\n".
                "SUMMARY:" . $this->escapeString($title) . "\n".
                "END:VEVENT\n";

它適用於第一個事件,所以我不認為這是為每個事件生成的代碼的問題,我做了一些研究,但似乎找不到解決方案,是否需要額外聲明在每個事件之間使用?

或者 Outlook 不支持單個 iCal 中的多個事件,因此只導入第一個?

任何幫助或建議將不勝感激。

提前致謝。

您的Icalendar通過了此驗證器 ,但請嘗試為每個事件添加一個ORGANIZER。 對規范的閱讀是必填項。

這可能是期望的問題。 當您說“導入”時,您如何發送/打開日歷以及您期望發生什么? 通常,Outlook和其他客戶對Icalendars有兩種治療方法。 如果Icalendar包含一個事件,具有METHOD = REQUEST,並且很幸運 ,它將顯示為邀請,並帶有將其直接添加到用戶日歷的按鈕。 (如果非常幸運,並且收件人的電子郵件在與會者字段中,則該事件可能在日歷中顯示為灰色,然后才進行預覽或在郵件視圖中打開。否則在預覽后會出現。)

如果它有多個事件或其他許多小問題,它將顯示為附件(如果通過郵件收到),用戶將不得不四處打開它。 通過郵件接收或從URL打開的多事件日歷被視為單獨的日歷。 沒有建議將其事件添加到用戶的日歷中,但是如果用戶知道自己在做什么,則可以選擇並拖動事件。

可能是很晚才回答這個問題的方法,但可能會幫助其他人。

https://docs.microsoft.com/zh-cn/openspecs/exchange_server_protocols/ms-oxcical/d2a0a079-02a6-4643-9e78-0ac35998e1fb

X-MS-OLK-FORCEINSPECTOROPEN

如果此屬性設置為TRUE,則應將iCalendar流作為單個Calendar對象導入,而不管iCalendar中存在的VEVENT組件數目如何。 請注意,包含多個VEVENT組件的iCalendar文件有可能通過使用本節中指定的RECURRENCE-ID屬性來表示單個約會。

如果您打開日歷,就會發生這種情況。 如果你導入它,那么它工作正常: 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM