MissCoder87
MissCoder87

Reputation: 2669

PHP: iCal creations, how to make a new line in a description

I'm using the following to create a calendar invite for outlook for a php script. However the \n doesn't give me a new line in outlook. Is there a way to do this? Seems silly if you can't!

  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";
}


  }

It's the DESCRIPTION New \n Line part i'm having issues with.

Any help will be greatly appreciated

Tom

Upvotes: 4

Views: 7647

Answers (3)

user2173353
user2173353

Reputation: 4640

You can use =0D=0A for new line with the appropriate encoding:

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

or an alternative approach (using base64):

DESCRIPTION;FMTTYPE=text/html;ENCODING=BASE64:PHA+Tm9ybWFsIDAgZmFsc2UgZmFsc2UgZmFsc2UgTWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlcjQ8L3A+DQo8YnIgY2xhc3M9ImNsZWFyIiAvPg==

Upvotes: 2

tplaner
tplaner

Reputation: 8461

On Windows you create a new line using \r\n.

To go into further detail:

\r in ASCII is CR standing for "Carriage Return"
\n in ASCII is LF standing for "Line Feed"

Windows requires the combination of both while Linux systems simply use \n.

There is tons of information (probably more then you'd ever be interested to know) on Wikipedia's Newline page.

Upvotes: 1

periklis
periklis

Reputation: 10188

You should replace \r\n with \n:

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

See also Encoding newlines in iCal files

Upvotes: 11

Related Questions