Ошибки отображаются, когда я запускаю на своем локальном хосте

0

У меня есть mail.php на моем локальном сервере. И когда я пытаюсь запустить, я получаю эту ошибку:

 Parse error: syntax error, unexpected 'r' (T_STRING) in C:\xampp\htdocs\Email\Mail.php on line 21

После того, как я исправлю эту ошибку, появится новый дисплей ошибок

Warning: filesize(): stat failed for /htdocs/Email/CashPickup.xml in C:\xampp\htdocs\Email\Mail.php on line 20

Warning: fopen(/htdocs/Email/CashPickup.xml): failed to open stream: No such file or directory in C:\xampp\htdocs\Email\Mail.php on line 21

Warning: fread() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Email\Mail.php on line 22

Warning: fclose() expects parameter 1 to be resource, boolean given in     C:\xampp\htdocs\Email\Mail.php on line 23

Примечание. Мой код запускается на веб-сервере без ошибок, и он работает правильно, но после запуска его на localhost эти ошибки отображаются.

Код:

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);

/* Email Detials */

$mail_to      = "email";
$from_mail    = "email";
$from_name    = "title";
$reply_to     = "";
$subject      = "subj...";
$message_body = "";

/* Attachment File 
Attachment location */

$file_name = "filename.xml";
$path      = "\htdocs\Email\";

// Read the file content

$file      = $path . $file_name;
$file_size = filesize($file);
$handle    = fopen($file, "r");
$content   = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));

/* Set the email header 
Generate a boundary */

$boundary = md5(uniqid(time()));

// Email header

$header = "From: " . $from_mail . " \r\n";
$header .= "Reply-To: " . $reply_to . "\r\n";
$header .= "MIME-Version: 1.0\r\n";

// Multipart wraps the Email Content and Attachment
$header .= "Content-Type: multipart/mixed;\r\n";
$header .= " boundary=\"" . $boundary . "\"";

$message_body .= "This is a multi-part message in MIME format.\r\n\r\n";
$message_body .= "--" . $boundary . "\r\n";

/* Email content
Content-type can be text/plain or text/html */

$message_body .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
$message_body .= "Content-Transfer-Encoding: 7bit\r\n";
$message_body .= "\r\n";
$message_body .= "$message_body\r\n";
$message_body .= "--" . $boundary . "\r\n";

/* Attachment
Edit content type for different file extensions */

$message_body .= "Content-Type: application/xml;\r\n";
$message_body .= " name=\"" . $file_name . "\"\r\n";
$message_body .= "Content-Transfer-Encoding: base64\r\n";
$message_body .= "Content-Disposition: attachment;\r\n";
$message_body .= " filename=\"" . $file_name . "\"\r\n";
$message_body .= "\r\n" . $content . "\r\n";
$message_body .= "--" . $boundary . "--\r\n";

// Send email
if (mail($mail_to, $subject, $message_body, $header)) {
    echo "Sent";
} else {
    echo "Error";
}
Теги:
email

1 ответ

2
Лучший ответ

Да, я нашел его, вы используете escape-символ, \.

Проверьте это,

$path      = "\htdocs\Email\";

должно быть

$path      = "\\htdocs\\Email\\";

Или еще лучше, просто используйте /:

$path      = "/htdocs/Email/";
  • 0
    @ user4212650 /htdocs/Email/CashPickup.xml не существует. Возможно, вам не хватает C:/path/to/htdocs/... или просто, если ваши файлы уже находятся в корне документа, используйте Email/CashPickup.xml качестве имени файла.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню