.ics邀请日历在outlook.com问题中无效

时间:2015-09-03 12:34:41

标签: php cakephp calendar outlook icalendar

您好我正在使用cakephp电子邮件发送附有.ics日历的电子邮件,问题是yahoo和gmail中显示的确认按钮完美但在outlook.com中没有。 这是一个.ics文件的例子:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//T//T//EN
METHOD:REQUEST
BEGIN:VEVENT
UID:20150830T184133-19847-domain.com
DTSTAMP:20150830T184133
DTSTART:20150812T000000Z
DTEND:20150818T000000Z
ORGANIZER;CN=myteam:MAILTO:admin@myteam.org
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=brabrick@hotmail.com:MAILTO:brabrick@hotmail.com
LOCATION:new york
SUMMARY:Madrid
BEGIN:VALARM
TRIGGER:-PT15M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR

这是我创建appointement .ics文件的PHP代码:

                $vcal = "BEGIN:VCALENDAR\r\n";
                $vcal .= "VERSION:2.0\r\n";
                $vcal .= "PRODID:-//T//T//EN\r\n";
                $vcal .= "METHOD:REQUEST\r\n";
                $vcal .= "BEGIN:VEVENT\r\n";


                $vcal .= "UID:".date('Ymd').'T'.date('His')."-".rand()."-domain.com\r\n";
                $vcal .= "DTSTAMP:".date('Ymd').'T'.date('His')."\r\n";
                $vcal .= "DTSTART:$visitedate\r\n";
                $vcal .= "DTEND:$visitedate\r\n";             
                $vcal       .=  "ORGANIZER;CN=myteam:MAILTO:admin@myteam.org\r\n";//j'ai ajouté cette ligne
                $vcal       .= "ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=$mail[$iduser]:MAILTO:$mail[$iduser]\r\n";
                //$vcal .= "DTEND:$end\r\n";
                if ($loc != "") $vcal .= "LOCATION:$loc\r\n";
                $vcal .= "SUMMARY:$objet\r\n";
                $vcal .= "BEGIN:VALARM\r\n";
                $vcal .= "TRIGGER:-PT15M\r\n";
                $vcal .= "ACTION:DISPLAY\r\n";
                $vcal .= "DESCRIPTION:Reminder\r\n";
                $vcal .= "END:VALARM\r\n";
                $vcal .= "END:VEVENT\r\n";
                $vcal .= "END:VCALENDAR\r\n";


                $headers = "\r\nMIME-version: 1.0\r\nContent-Type: text/calendar; method=REQUEST; charset=\"iso-8859-1\"";
                $headers .= "\r\nContent-Disposition: attachment; filename=\"appointment.ics\"";
                $headers .= "\r\nContent-Transfer-Encoding: 7bit\r\nX-Mailer: Microsoft Office Outlook 12.0";


                $Email = new CakeEmail('smtp');
                $Email->to($mail);
                $Email->subject($objet);
                $Email->replyTo('admin@myteam.org');
                $Email->from ('admin@myteam.org');
                $Email->setHeaders(array($headers));

提前致谢

1 个答案:

答案 0 :(得分:2)

您的ics文件看起来很好,因此问题很可能与您的电子邮件MIME结构有关。看看Multipart email with text and calendar: Outlook doesn't recognize ics