Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Outlook Ical.ics Office 365不可读_Outlook_Google Calendar Api_Phpmailer_Icalendar - Fatal编程技术网

Outlook Ical.ics Office 365不可读

Outlook Ical.ics Office 365不可读,outlook,google-calendar-api,phpmailer,icalendar,Outlook,Google Calendar Api,Phpmailer,Icalendar,我正在尝试使用Ical和phpMail发送会议请求。我将Ical作为我的邮件附件加入。如果我下载附件,我可以用桌面Outlook阅读它,但我尝试用Office 365打开它,我收到一条警告:“无法查看.ICS附件,因为不支持该格式。”。在谷歌日历上,我也无法导入它 $ical = "BEGIN:VCALENDAR\r\n"; $ical .= "VERSION:2.0\r\n"; $ical .= "METHOD:REQUEST\r\n"; $ical .= "BEGIN:VEVENT\r\

我正在尝试使用Ical和phpMail发送会议请求。我将Ical作为我的邮件附件加入。如果我下载附件,我可以用桌面Outlook阅读它,但我尝试用Office 365打开它,我收到一条警告:“无法查看.ICS附件,因为不支持该格式。”。在谷歌日历上,我也无法导入它

$ical = "BEGIN:VCALENDAR\r\n";
$ical .= "VERSION:2.0\r\n";
$ical .= "METHOD:REQUEST\r\n";  
$ical .= "BEGIN:VEVENT\r\n";
$ical .= "BEGIN:VTIMEZONE\r\n";
$ical .= "TZID:Europe/Paris\r\n";
$ical .= "X-LIC-LOCATION:Europe/Paris\r\n";
$ical .= "BEGIN:DAYLIGHT\r\n";
$ical .= "TZOFFSETFROM:+0100\r\n";
$ical .= "TZOFFSETTO:+0200\r\n";
$ical .= "TZNAME:CEST\r\n";
$ical .= "DTSTART:19700329T020000\r\n";
$ical .= "RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3\r\n";
$ical .= "END:DAYLIGHT\r\n";
$ical .= "BEGIN:STANDARD\r\n";
$ical .= "TZOFFSETFROM:+0200\r\n";
$ical .= "TZOFFSETTO:+0100\r\n";
$ical .= "TZNAME:CET\r\n";
$ical .= "DTSTART:19701025T030000\r\n";
$ical .= "RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10\r\n";
$ical .= "END:STANDARD\r\n";
$ical .= "END:VTIMEZONE\r\n"; 
$ical .= "ORGANIZER:MAILTO:hgdfsghdsfghsd@gmail.com\r\n";
$ical .= "ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:ghhgjkgh@gmail.com\r\n";
$ical .= "UID:".strtoupper(md5($interId))."-*****.fr\r\n";
$ical .= "METHOD:REQUEST\r\n";
$ical .= "SEQUENCE:1";
$ical .= "STATUS:".$status."\r\n";
$ical .= "DTSTART:".$startDate->format('Ymd').'T'.$startDate->format('His')."\r\n";
$ical .= "DTEND:".$endDate->format('Ymd').'T'.$endDate->format('His')."\r\n";
$ical .= "LOCATION:".$shopName."\r\n";
$ical .= "SUMMARY:".$summary."\r\n";
$ical .= "DESCRIPTION:\r\n";
$ical .= "BEGIN:VALARM\r\n";
$ical .= "TRIGGER:-PT15M\r\n";
$ical .= "ACTION:DISPLAY\r\n";
$ical .= "DESCRIPTION:Reminder\r\n";
$ical .= "END:VALARM\r\n";
$ical .= "END:VEVENT\r\n";
$ical .= "END:VCALENDAR\r\n";

$mail->AddStringAttachment($ical, "Invite.ics", "base64", "text/calendar; charset=utf-8; method=REQUEST");
我希望gmail和office 365可以阅读邀请,但我不明白我的ical有什么问题。你有什么想法吗

谢谢

有几个问题:

1) VEVENT组件中的DTSTART和DTEND属性缺少TZID参数

$ical .= "DTSTART;TZID=Europe/Paris:".$startDate->format('Ymd').'T'.$startDate->format('His')."\r\n";
$ical .= "DTEND;TZID=Europe/Paris:".$endDate->format('Ymd').'T'.$endDate->format('His')."\r\n";
2) VTIMEZONE组件不应位于VEVENT组件的内部。它应该位于VCALENDAR组件的下面

BEGIN:VCALENDAR
VERSION:2.0
METHOD:REQUEST
BEGIN:VTIMEZONE
...
END:VTIMEZONE
BEGIN:VEVENT
...
END:VEVENT
END:VCALENDAR

第二个错误可能是由VEVENT组件中的METHOD属性引起的。方法只应出现在vCalendar组件内部。

如果您提供生成的ICAL的实际副本以及更详细的错误消息(如果有的话),则诊断问题会更容易。我不知道如何测试ICAL以及如何获取更多错误消息。我收到的唯一错误消息来自office 365。但是我上传了ICAL。链接如下:它没有解决我的问题,但它给了我另一条错误消息“无法查看.ICS附件,因为它包含与日历无关的项目。”。我试图删除VTIMEZONE和VALARM,看看它们是否是项目,但它不起作用。你认为有没有可能是缺少了什么东西,让Office365认为它与日历无关?@RHau我看不出还有什么不对劲的地方。您能提供代码生成的iCalendar文件的示例吗?谢谢您的帮助。你可以在这里下载:@RHau不知道。很抱歉
BEGIN:VCALENDAR
VERSION:2.0
METHOD:REQUEST
BEGIN:VTIMEZONE
...
END:VTIMEZONE
BEGIN:VEVENT
...
END:VEVENT
END:VCALENDAR