2014-09-18 16 views
0

我发送这篇文章作为多/部分电子邮件的一部分。不过,我在Outlook中得到一个错误“不支持日历message.ics”我已确认我有一个参加者和一个组织者,所以我不知道为什么会发生这种情况。PHP邮件错误“不支持日历message.ics”iCal

$ical = 'BEGIN:VCALENDAR' . "\r\n" . 
    'PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN' . "\r\n" . 
    'VERSION:2.0' . "\r\n" . 
    'METHOD:REQUEST' . "\r\n" . 
    'BEGIN:VTIMEZONE' . "\r\n" . 
    'TZID:Central Time' . "\r\n" . 
    'BEGIN:STANDARD' . "\r\n" . 
    'DTSTART:20141101T020000' . "\r\n" . 
    'RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11' . "\r\n" . 
    'END:STANDARD' . "\r\n" . 
    'BEGIN:DAYLIGHT' . "\r\n" . 
    'DTSTART:20090301T020000' . "\r\n" . 
    'RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3' . "\r\n" . 
    'TZOFFSETFROM:-0500' . "\r\n" . 
    'TZOFFSETTO:-0400' . "\r\n" . 
    'TZNAME:EDST' . "\r\n" . 
    'END:DAYLIGHT' . "\r\n" . 
    'END:VTIMEZONE' . "\r\n" . 
    'BEGIN:VEVENT' . "\r\n" . 
    'ORGANIZER;CN="'.$rep.'":MAILTO:'.$repemail. "\r\n" . 
    'ATTENDEE;CN="'.$to_name.'";ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:'.$to_address. "\r\n" . 
    'LAST-MODIFIED:' . date("Ymd\TGis") . "\r\n" . 
    'UID:'.date("Ymd\TGis", strtotime($startTime)).rand()."@".$domain."\r\n" . 
    'DTSTAMP:'.date("Ymd\TGis"). "\r\n" . 
    'DTSTART;TZID="Central Time":'.date("Ymd\THis", strtotime($startTime)). "\r\n" . 
    'DTEND;TZID="Central Time":'.date("Ymd\THis", strtotime($endTime)). "\r\n" . 
    'TRANSP:OPAQUE'. "\r\n" . 
    'SEQUENCE:1'. "\r\n" . 
    'DESCRIPTION: '.$description. "\r\n" . 
    'SUMMARY:' . $subject . "\r\n" . 
    'LOCATION:' . $location . "\r\n" . 
    'CLASS:PUBLIC'. "\r\n" . 
    'PRIORITY:5'. "\r\n" . 
    'BEGIN:VALARM' . "\r\n" . 
    'TRIGGER:-PT15M' . "\r\n" . 
    'ACTION:DISPLAY' . "\r\n" . 
    'DESCRIPTION:Reminder' . "\r\n" . 
    'END:VALARM' . "\r\n" . 
    'END:VEVENT'. "\r\n" . 
    'END:VCALENDAR'. "\r\n"; 

    // Send Appointment .ical file 
    $message .= 'Content-Type: text/calendar;name="message.ics";method=REQUEST\n'; 
    $message .= "Content-Transfer-Encoding: 8bit\n\n"; 
    $message .= $ical; 
+0

http://www.julian-young.com/2009/07/07/php-ical-email – 2014-09-18 18:44:26

+0

你知道的PHPMailer在其他文件夹捆绑的ICS产生类别?这很简单,但它确实有效 - 输出比您发布的要简单得多。也就是说,请注意[this ticket](https://github.com/PHPMailer/PHPMailer/issues/175) - 对ICS的支持其实非常棘手。 – Synchro 2014-09-18 19:57:28

+0

这将有助于查看由此产生的icalendar流 – arnaudq 2014-09-22 07:13:54

回答

2

你处理的前景嗅探器,即在到达处理的邀请任务。这是可笑的挑剔,没有文件。首先检查在线验证器中的Icalendar。然后,从Gmail发送邀请到Outlook。使用Gmail“显示原始”来检查生成的Icalendar。将您的应用程序更改为完全匹配Gmail邀请,包括字段顺序,并且您应该发现Outlook的邀请已正确处理。

+0

我个人遇到了空白Attendee行问题,但是Gmail版本提供了一个很好的工作点来与 – Brent 2016-09-07 18:41:37