Задать вопрос
@tqvf9a1tiquf

Что прописать в request.php?

Здравствуйте!
Сразу оговорка - полный ноль.
Решить уже не могу третий день.
Есть контактная форма, которая обращается к файлу на сервере с именем request.php (видимо обычно его называют mail.php). Находится он не в корне сайта где index.html, а в отдельной папке с именем /request/. Содержание его следующее:
<?php

if($_POST['id'] === "contact-center-form-2--0-form") {
$mailto = "";

$data_array = json_decode($_POST['data']);
$message = "";
foreach ($data_array as $key => $value) {
if (isset($value->name) && $value->name !== "") {
$message .= $value->name.': '.$value->value.'
';
}
}

$subject = "";

// a random hash will be necessary to send mixed content
$separator = md5(time());

// carriage return type (RFC)
$eol = "\r\n";

// main header (multipart mandatory)
$headers = "From: $mailto" . $eol;
$headers .= "Reply-To: $mailto" . $eol;
$headers .= "MIME-Version: 1.0" . $eol;
$headers .= "Content-Type: multipart/mixed; boundary=\"" . $separator . "\"" . $eol;
$headers .= "Content-Transfer-Encoding: 7bit" . $eol;
$headers .= "This is a MIME encoded message." . $eol;

// message
$body = "--" . $separator . $eol;
$body .= "Content-Type: text/html; charset=iso-8859-1" . $eol;
$body .= "Content-Transfer-Encoding: 8bit" . $eol . $eol;
$body .= "" . $message . "" . $eol . $eol;

foreach( $_FILES as $file) {
if ( !move_uploaded_file( $file['tmp_name'], dirname(__FILE__) . '/../tmp/' . $file['name'] ) ) {
echo "error upload file: " . $file['name'];
continue;
}
$filename = $file['name'];
$path = dirname(__FILE__) . '/../tmp';
$file = $path . "/" . $filename;

$content = file_get_contents($file);
$content = chunk_split(base64_encode($content));

// attachment
$body .= "--" . $separator . $eol;
$body .= "Content-Type: application/octet-stream; name=\"" . $filename . "\"" . $eol;
$body .= "Content-Transfer-Encoding: base64" . $eol;
$body .= "Content-Disposition: attachment" . $eol;
$body .= $content . $eol . $eol;
}

$body .= "--" . $separator . "--";

//SEND Mail
if (mail($mailto, $subject, $body, $headers)) {
echo "mail send ... OK"; // or use booleans here
} else {
echo "mail send ... ERROR!";
print_r( error_get_last() );
}
}
Вопрос как правильно его заполнить?
Перепробовал все варианты - всегда пустая страница и в адресной строке обращение к этому файлу с данными из контактной формы.
Единственное браузер начал выдавать синтакс ошибку когда стал заполнять:
if (mail($mailto, $subject, $body, $headers)) { - это вроде понятно, что первый кому, второй тема сообщения, а дальше не понимаю.
И не понятно нужно ли их ($mailto и $subject) заполнить в if($_POST['id'] - то что в самом начале.
Проверку сервера на отправку сообщений посредством PHP выполнял, все работает.
Спасибо.
  • Вопрос задан
  • 94 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
akelsey
@akelsey
Вы даете часть кода из которого логика приложения не ясна даже вам (вам доступен весь код). Как вы хотите что б кто-то догадался как это было задумано программистом?
Могу только догадываться, включив режим телепат что файл request.php должен инклюдится в другой файл, переменные $mail/$subject должны быть в объявлены (в коде их нет).
Код в самом начале тоже их не заполняет, он заполняет хидеры smtp но envelope часть не заполняется.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы