Lance Lance - 11 months ago 78
PHP Question

Syntax error, unexpected T_SL

I'm fairly new to php and I'm using a script that creates a function called the "mime_mailer" which essentially allows me to use PHP to send emails that are able to be designed with CSS instead of being merely plain text.

Yet, in my registration script, I try to write some code that sends a CSS email, but I get an error saying that there's a syntax error. Could someone please fill me in on this?

$subject = "Your Red-line Account";
$css = "body{ color: #090127; background-color: #f0f0f0; }";
$to = $usercheck;

$message =<<<END
Hi $first_name,

Your Red-line account is almost complete. To finish, go to <a href=''>The Red-line</a> and enter your eight digit confirmation code.

Your confirmation code is: <b>$code</b>

</p> <br />

The Red-line Operator

// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= "From: The Red-line <>\r\n";
$headers .= "To: $first_name $last_name <$usercheck>\r\n";

// Mail it

mime_mailer($to, $subject, $message, $headers, NULL, $css);

Here is the code for the "function_mime_mailer.php" file.

if(basename(__FILE__) == basename($_SERVER['PHP_SELF'])) send_404(); // stop http access to this file

function mime_mailer($to, $subject, $message, $headers = NULL, $attachments = NULL, $css = NULL)
if(!preg_match('/^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a- z]{2,6})$/', $to)) return FALSE;
if(preg_match('/<(html|head|body|div|a|h|p|table|br|img|b|hr|ol|ul|span|pre|i|form)[^>]*[^>]*>/i', $message)) $html = TRUE;

if(stristr($message, '<body')) $message = stristr($message, '<body');
$message = delete_local_links($message);
$headers = "MIME-Version: 1.0\n";
$headers.= "\nMIME-Version: 1.0\n";
$result = plain_text($message);
}elseif(isset($html) and $html == TRUE){
if(!isset($css)) $css = NULL;
if(preg_match('/<img[^>]+>/i', $message)){
$result = multipart_related($message, $css);
$result = multipart_alternative($message, $css);
$result['message'] = delete_non_cid_images($result['message']);
$parts = attachments($attachments);
array_unshift($parts, implode('', $result));
$result = multipart_mixed($parts);
$headers = $headers.$result['headers'];
//print '<pre>'.htmlspecialchars($headers.$result['message']).'</pre>';exit;
if(mail($to, $subject, $result['message'], $headers)) return TRUE;
return FALSE;

Answer Source

Have a look at the List of Parser tokens.

T_SL references to <<.

You should not use tabs or spaces before you use END;. Have a look at this huge warning.