2013-03-08 58 views
0

我寫了一個發送會議請求的小程序。我正在使用SwiftMailer發送電子郵件。iCalendar RSVP問題

當電子郵件到達目的地,並且當收件人點擊接受/拒絕時,它不發送通知。我相信,頭信息是正確的,所以是電子郵件的內容:

   <?PHP 
       $message = "<html>\n"; 
       $message .= "<body>\n"; 
       $message .= '<p>Dear '.$emailto_name.',</p>'; 
       $message .= '<p><br>'.$meeting_description.'<br></p>'; 
       $message .= '<p>Thanks,<br>CATS</p>'; 
       $message .= "</body>\n"; 
       $message .= "</html>\n"; 


       $cal[] = "BEGIN:VCALENDAR"; 
       $cal[] = "PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN"; 
       $cal[] = "VERSION:2.0"; 
       $cal[] = "METHOD:REQUEST"; 
       $cal[] = "BEGIN:VTIMEZONE"; 
       $cal[] = "TZID:" . $tz_name . ""; 
       $cal[] = "BEGIN:STANDARD"; 
       $cal[] = "DTSTART:".date('Ymd')."T".date('His').""; 
       $cal[] = "TZOFFSETFROM:" . $tzOffsetFrom . ""; 
       $cal[] = "TZOFFSETTO:". $tzOffsetTo . ""; 
       $cal[] = "RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11"; 
       $cal[] = "END:STANDARD"; 
       $cal[] = "BEGIN:DAYLIGHT"; 
       $cal[] = "DTSTART:". date('Ymd') . "T" . date('His') . ""; 
       $cal[] = "TZOFFSETFROM:". $tzOffsetTo . ""; 
       $cal[] = "TZOFFSETTO:" . $tzOffsetFrom . ""; 
       $cal[] = "RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3"; 
       $cal[] = "END:DAYLIGHT"; 
       $cal[] = "END:VTIMEZONE"; 
       $cal[] = "BEGIN:VEVENT"; 
       $cal[] = "DTSTART;TZID=".$meeting_start; 
       $cal[] = "DTEND;TZID=".$meeting_end; 
       $cal[] = "ORGANIZER:MAILTO:".$from_address; 
       $cal[] = "ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;X-NUM-GUESTS=0:MAILTO:".$from_address; 
       $cal[] = "LOCATION:".$meeting_location; 
       $cal[] = "TRANSP:OPAQUE"; 
       $cal[] = "SEQUENCE:0"; 
       $cal[] = "UID:".$cal_uid; 
       $cal[] = "DTSTAMP:".$todaystamp; 
       $cal[] = "DESCRIPTION:".$meeting_description; 
       $cal[] = "SUMMARY:".$subject; 
       $cal[] = "PRIORITY:5"; 
       $cal[] = "CLASS:PUBLIC"; 
       $cal[] = "END:VEVENT"; 
       $cal[] = "END:VCALENDAR"; 

       $cal_str = implode("\r\n", $cal); 

       $the_message = Swift_Message::newInstance() 
         ->setSubject('Interview Schedule') 
         ->setFrom($emailfrom) 
         ->setSender($emailfrom) 
         ->setTo($emailto) 
         ->setBody($message, 'text/html') 
         ->addPart($cal_str, 'text/calendar'); 

       $headers = $the_message->getHeaders(); 

       $headers->AddTextHeader('Content-class', 'urn:content-classes:calendarmessage'); 
       $headers->AddTextHeader('Disposition-Notification-To', '"' . $_SESSION['CATS']->getEmail() . '" <' . $_SESSION['CATS']->getEmail() . '>'); 

       $result = $mailer->send($the_message); 
       if ($result === 1) 
         echo "\tEmail was sent successfully.</p>"; 
       else 
         echo "\tCould not send the message ($result).</p>"; 
?> 

誰能告訴我它是什麼,我做錯了接受/拒絕通知不發送。

非常感謝。

回答

2

沒有嘗試,您的文件看起來不錯,但對於一個參數:與會者的屬性值應該是與會者電子郵件地址$to_address而不是$from_address