ユーザーが簡単にインポートできるように、PhpMailer 経由で .ics ファイルを送信しようとしています。
Outlook に送信する場合は問題なく動作しますが、Gmail はファイルを認識しないため、Google カレンダーにインポートするオプションがありません。
私の ics ファイルは次のようになります。
BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 14.0 MIMEDIR//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Romance Standard Time
BEGIN:STANDARD
DTSTART:16011028T030000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
DTSTART:16010325T020000
BEGIN:DAYLIGHT
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
CLASS:PUBLIC
DESCRIPTION:
DTEND;TZID="Romance Standard Time":20130815T154000
DTSTAMP:20130814T094035Z
DTSTART;TZID="Romance Standard Time":20130815T144000
SUMMARY:Your appointment
LOCATION:1000 Brussels
END:VEVENT
END:VCALENDAR
私のphpコードは次のようになります。
$mail->AddAttachment('../linkToIcs.ics');
ファイルは正常に添付されますが、Gmail で認識されません。次に、文字列の添付ファイルとして追加してみました
if (pathinfo($attachment, PATHINFO_EXTENSION) == 'ics') {
$contents = file_get_contents($attachment);
$mail->AddStringAttachment(
$contents,
pathinfo($attachment, PATHINFO_BASENAME),
'7bit',
'text/calendar'
);
}
添付ファイルとして正しく追加されましたが、Gmail で「インポート可能な」カレンダー イベントとして認識されません。
また、同じメールに HTML 本文があることにも注意してください。
これが機能しない理由についての説明は素晴らしいでしょう。