send.php 2.8 KB
<?php
$filename = $_FILES['resume']['name'];
$temp_name = $_FILES['resume']['tmp_name'];
$file_type = $_FILES['resume']['type'];
$filepath = $temp_name;

if (!$_POST['agreed']) {
    $r = array('type' => 'error', 'message' => 'Пожалуйста, подтвердите передачу персональных данных');
    respond($r);
    die;
}
if (!$filename) {
    $r = array('type' => 'error', 'message' => 'Пожалуйста, загрузите резюме');
    respond($r);
    die;
}
$whitelist = array('pdf', 'doc', 'docx');
$extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION));

if (!in_array($extension, $whitelist)) {
    $r = array('type' => 'error', 'message' => 'Поддерживаются только pdf и word файлы!');
    respond($r);
    die;
}

$user_email = $_POST['email'];
$to = 'mind.it@ya.ru';
$subject = "Отклик на вакансию Менеджера по Контексту";
$message = $_POST['message'] . '<br>';
$message .= $_POST['phone'] . '<br>';
$message .= $_POST['fio'] . '<br>';
$message .= $user_email;

$boundary = "--" . md5(uniqid(time()));
$mailheaders = "MIME-Version: 1.0;\r\n";
$mailheaders .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
// разделитель указывается в заголовке в параметре boundary
$mailheaders .= "From: $user_email <$user_email>\r\n";
$mailheaders .= "Reply-To: $user_email\r\n";
$multipart = "--$boundary\r\n";
$multipart .= "Content-Type: text/html; charset=windows-1251\r\n";
$multipart .= "Content-Transfer-Encoding: base64\r\n";
$multipart .= "\r\n";
$multipart .= chunk_split(base64_encode(iconv("utf8", "windows-1251", $message)));

$fp = fopen($filepath, "r");
if (!$fp) {
    $r = array('type' => 'error', 'message' => 'Не удалось открыть файл!');
    respond($r);
    die;
}
$file = fread($fp, filesize($filepath));
fclose($fp);

$message_part = "\r\n--$boundary\r\n";
$message_part .= "Content-Type: application/octet-stream; name=\"$filename\"\r\n";
$message_part .= "Content-Transfer-Encoding: base64\r\n";
$message_part .= "Content-Disposition: attachment; filename=\"$filename\"\r\n";
$message_part .= "\r\n";
$message_part .= chunk_split(base64_encode($file));
$message_part .= "\r\n--$boundary--\r\n";
// второй частью прикрепляем файл, можно прикрепить два и более файла

$multipart .= $message_part;

if (mail($to, $subject, $multipart, $mailheaders)) {
    $r = array('type' => 'success_send', 'message' => 'Отклик на вакансию отправлен, ожидайте обратной связи');
    respond($r);
    die;
};

if (time_nanosleep(5, 0)) {
    unlink($filepath);
}


function respond($val)
{
    $response = json_encode($val);
    echo $response;
    return $response;
}