2012-01-13 6 views
4

私はPHPスクリプトのためのOutlookの予定表を作成するために、以下を使用しています。しかし、\ nは私に見通しの新しい行を与えません。これを行う方法はありますか?あなたができなければばかげているように見えます!PHP:iCalの作成、説明に新しい行をつける方法

function addToCalendar($calEmail, $calSubject, $calDesc) 
    { 

$calEmail = '[email protected]'; 
$description = $calDesc; 
$message="BEGIN:VCALENDAR 
VERSION:2.0 
CALSCALE:GREGORIAN 
METHOD:REQUEST 
BEGIN:VEVENT 
DTSTART:20110718T121000Z 
DTEND:20110718T131000Z 
DTSTAMP:20110525T075116Z 
ORGANIZER;CN=TOMS TEST:mailto:[email protected] 
UID:12345678 
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP= TRUE;CN=Yup:mailto:[email protected] 
DESCRIPTION New \n Line 
LOCATION: I AM THE LOCATION 
SEQUENCE:0 
STATUS:CONFIRMED 
SUMMARY: TEST SUMMARY 
TRANSP:OPAQUE 
END:VEVENT 
END:VCALENDAR"; 

$headers = "From: From Name <From Mail>\n"; 
$headers .= "MIME-Version: 1.0\n"; 
$headers .= "Content-Type: text/calendar; method=REQUEST;\n"; 
$headers .= '  charset="UTF-8"'; 
$headers .= "\n"; 
$headers .= "Content-Transfer-Encoding: 7bit"; 


$subject = "Meeting Subject"; 
$subject = html_entity_decode($calSubject, ENT_QUOTES, 'UTF-8'); 


if(mail($calEmail, $calSubject, $message, $headers)) { 

    echo "sent"; 
}else { 
    echo "error"; 
} 


    } 

私は問題が発生しています。DESCRIPTION New \n Lineです。

すべてのヘルプは非常にあなたが\r\nを使用して新しい行を作成するWindowsでは

トム

答えて

9

あなたは交換する必要があります\ rを\ nは\ nに:

DESCRIPTION;ENCODING=QUOTED-PRINTABLE:This is the first line.=0D=0AThe Second line.=0D=0AThe third line. 

か:

$description = str_replace("\r\n", "\\n", $description); 

も参照Encoding newlines in iCal files

1

を理解されるであろう。さらに詳細に入る

:ASCIIで

\rCRはASCIIに「キャリッジリターン」
\n放置され

WindowsはしばらくLinuxの両方の組み合わせを必要とする「ライン・フィード」をLFが立っていますシステムは単に\nを使用します。

Wikipedia's Newline pageにはたくさんの情報があります(多分もっと知りたいと思うかもしれません)。

+0

ねえ、ありがとう。私はそれを知らなかった。 Outlookはまだ新しい行として表示されません:( – TMB87

0

あなたは適切なエンコードと改行のため=0D=0Aを使用することができます代替アプローチ(base64を使用):

DESCRIPTION;FMTTYPE=text/html;ENCODING=BASE64:PHA+Tm9ybWFsIDAgZmFsc2UgZmFsc2UgZmFsc2UgTWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlcjQ8L3A+DQo8YnIgY2xhc3M9ImNsZWFyIiAvPg== 
関連する問題