嗨,我使用cakePHP电子邮件发送附有.ics日历的电子邮件,问题是确定按钮si显示在雅虎和Gmail完全,但不在outlook.com.
这里是一个.ics文件的例子:
这里是一个.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
这里是我的PHP代码,创建appointement .ics文件:
$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));
提前致谢
您的ics文件看起来很好,所以这个问题很可能与您的电子邮件MIME结构相关.看看
Multipart email with text and calendar: Outlook doesn’t recognize ics