發佈日期:
探討在1個電郵中‧加入多個ICS檔案邀請(invitations)時出現的問題
01. 事源公司同事收到出面公司一個電郵邀請(invitation),內有3個ICS檔案(儲存了3個不同會議日期)。當用Outlook或OWA打開時,可以一個一個儲存在Outlook的行事曆中。但如果用iPhone打開此邀請,卻只能儲存最先打開一個的ICS檔案內容於iPhone行事曆中。
02. 同事指出那間公司提到,這是ICS檔案在iPhone出現的問題,沒有方法解決。和同事打賭『1蚊』的賭注,開始自找麻煩的開始。
03. 第一個想法,是想到利用像公眾假期ICS檔案方式,將3個不同日期邀請,放在一個ICS檔案。當用戶收到電郵,便可以把3個不同日期的邀請儲存。經測試後,OWA及iPhone是沒有問題的,可以成功將邀請儲存。但在Outlook時,打開ICS檔案便會出現新一個『Untitled』行事曆。而用戶要每一個會議邀請打開後,再用『Copy to My Calendar』將有關邀請複製到自己的行事曆中。
03. 另外一個問題,就是同事事後指出,在邀請中要有圖片及文字作為內容(明明之前賭注沒有提及呢!)。文字一定沒有問題的,但圖片要連到外面的網站,ICS檔案是否可以接受呢?但如果圖片不能接受,為何Outlook收到ICS檔案時,邀請裡面是有圖片呢?
04. 打開ICS檔案,終於看到原因。在『X-ALT-DESC;FMTTYPE=text/html:』位置中,正正就是儲存了HTML內容,當然包括了連到外面的圖片連結。
05. 反覆測試,ICS檔案加入了『X-ALT-DESC;FMTTYPE=text/html:』,正正就是令到iPhone只能儲存最先打開一個邀請的原因。如果1個ICS檔案內有3個邀請,不單iPhone出現問題,連Outlook也會出現問題。
06. 一切又返回原點。改回3個ICS檔案分別設置1個邀請。但今次將『X-ALT-DESC;FMTTYPE=text/html:』內容重新用正統HTML改一次,最重要是刪除一大堆沒有用的HTML設定。
07. 最後將每個ICS檔案每個邀請設定唯一的UID。
08. 重新在Outlook中發出電郵邀請,將3個ICS檔案儲存3個不同邀請,而邀請中也加入了HTML連接外部網站圖片。
09. OWA情況。收到3個ICS檔案,儲存後便可看到HTML內容。
10. Outlook情況。收到3個ICS檔案,看不到HTML內容。但儲存後,再打開邀請,便可看到HTML內容。
11. iPhone情況。收到3個ICS檔案,打開每一個檔案的邀請再儲存,但共通點是看不到HTML內容,只看到ICS檔案『description』內容。
12. 結論是,1個ICS檔案有多於1個邀請,就不要加入HTML內容,而且,要接受在Outlook中會出現新一個『Untitled』行事曆。而1個ICS檔案只儲存1個邀請,就可以加入HTML內容,但HTML內容一定要盡量簡潔,這一點最為重要。另外,ICS檔案中的HTML程式碼品質,絕對會影響在不同設備的結果。當然,世界上不只有Outlook、OWA、iPhone,還有Google Calendar、Android Phone,以上方法是否合用,就留待下次有機會再試。
發佈留言