Reputation: 2669
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
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
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
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