2

これについては本当に助けが必要です。私はこの機能を持っています:

function sendICal($dtstart,$dtend,$loc,$summary,$from,$to,$subject, $EMAIL, $uid, $decline = 0, $debug = 0) 
{

$now=date('Ymd').'T'.date('His');
$vcal = "BEGIN:VCALENDAR\r\n";
$vcal .= "VERSION:2.0\r\n";
$vcal .= "PRODID:ITAF_IMS_NL\r\n";
$vcal .="CALSCALE:GREGORIAN\r\n";

if($debug){

$aan = ',marko.vasic@itaf.eu';
}

 else {

  for($x = 0; $x < count($EMAIL); $x++){
  $aan .= ','.$to[$x];
}
}

if($decline){

  $vcal .="METHOD:REPLY\n";
  $vcal .="BEGIN:VEVENT\n";
  $vcal .="STATUS:CONFIRMED\n";
  for($x = 0; $x < count($EMAIL); $x++){
  $vcal .= "ATTENDEE;PARTSTAT=DECLINED;CN=\"\";ROLE=REQ-PARTICIPANT;RSVP=FALSE:MAILTO:".$EMAIL[$x]."\n";

  }

  $vcal .="X-WR-TIMEZONE:Europe/Brussels\n";
  $vcal .="DTSTAMP:".$now."\n";
  $vcal .="DTSTART;TZID:$dtstart\n";
  $vcal .="DTEND:".$dtend."\n";
  $vcal .="SUMMARY:Declined:".$subject."\n";
  $vcal .="SEQUENCE:1\n";
  $vcal .="X-MICROSOFT-CDO-OWNER-CRITICAL-CHANGE:$now\r\n";
  $vcal .="X-MICROSOFT-CDO-ATTENDEE-CRITICAL-CHANGE:$now\r\n";
  $vcal .="X-MICROSOFT-CDO-APPT-SEQUENCE:1\n";
  $vcal .="X-MICROSOFT-CDO-OWNERAPPTID:-1\n";
  $vcal .="X-MICROSOFT-CDO-ALLDAYEVENT:FALSE\n";
  $vcal .="END:VEVENT\n";

  } else {

  $vcal .= "METHOD:REQUEST\n";
  $vcal .= "BEGIN:VEVENT\n";
  for($x = 0; $x < count($EMAIL); $x++){
  $vcal .= "ATTENDEE;CN=\"\";ROLE=REQ-PARTICIPANT;RSVP=FALSE:MAILTO:".$EMAIL[$x]."\n";

  }

  $vcal .="CREATED:".$now."\n";
  $vcal .="X-WR-TIMEZONE:Europe/Brussels\n";
  $vcal .="LAST-MODIFIED:".$now."\n";
  $vcal .= "DTSTAMP:".$now."\n";
  $vcal .= "DTSTART:".$dtstart."\n";
  $vcal .= "DTEND:".$dtend."\n";
  $vcal .= "SUMMARY:".$subject."\n";
  $vcal .= "UID:".$uid."\n";
  if ($loc != "") $vcal .= "LOCATION:".$loc."\n";
  $vcal .= "BEGIN:VALARM\n";
  $vcal .= "TRIGGER:-PT15M\n";
  $vcal .= "ACTION:DISPLAY\n";
  $vcal .= "DESCRIPTION:Reminder:".$summary."\n";
  $vcal .= "END:VALARM\n";
  $vcal .= "END:VEVENT\n";
  } 
 $vcal .= "UID:".$uid."\n";

if ($loc != "") $vcal .= "LOCATION:".$loc."\n";
      $vcal .= "END:VCALENDAR\n";

  $headers = "From: $from\r\nReply-To: $from";
  $headers .= "\r\nMIME-version: 1.0\r\nContent-Type: text/calendar; method=REQUEST; charset=\"iso-8859-1\"";
  $headers .= "\r\nContent-Transfer-Encoding: 7bit\r\nX-Mailer: Microsoft Office     Outlook 12.0";

mail(substr($aan,1), $subject, $vcal, $headers);
 }

イベントコールを送信する必要があります。説明以外はすべて送信します。説明フィールドは常に空白のままでした。何を送っても構いません。説明として送信する文字列を削除<br/>しても、空白のフィールドを送信したままです。ヘッダーに表示されないエラーがありますか? これを修正する方法を知っている人はいますか?

4

1 に答える 1

1

「リマインダー」というテキストの後の:コロンです。コロンは、要素の名前と値を区切る特殊文字です。1 つの要素に対して複数のコロンを使用することはできません。バックスラッシュでエスケープできます。次のようになります。

DESCRIPTION:Reminder\:

CRLF値の直後に空白文字で区切ることにより、値に複数の行を指定できます。

于 2013-05-07T08:53:30.213 に答える