<input type="text" maxlength="40" name="name" autocomplete="on" placeholder="Иван Васильевич" required /><
<input type="email" maxlength="40" name="email" autocomplete="on" placeholder="ivan@mail.ru" required />
<input type="tel" maxlength="20" name="phone" autocomplete="on" placeholder="8-913-987-1234" required />
<?php
if (isset ($_POST['email']))
{
$to = "site@mail.ru";
$email = $_POST['email'];
$name = $_POST['name'];
$phone = $_POST['phone'];
$msg = $_POST['message'];
$subject = "Запрос с нашего сайта";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From: admin@site.ru\r\n";
$message = "<html><body style='font-family:Tahoma;'>
<h2 style='font-weight:bold; padding-bottom:10px;'>Запрос с нашего сайта</h2>\r\n
<p><b>Имя:</b> ".$name."</p>\r\n
<p><b>E-mail:</b> ".$email."</p>\r\n
<p><b>Телефон:</b> ".$phone."</p>\r\n
<p><b>Сообщение:</b> ".$msg."</p>\r\n
</body></html>";
$filesize = '';
$boundary = md5(date('r', time()));
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$message = "
Content-Type: multipart/mixed; boundary=\"$boundary\"
--$boundary
Content-Type: text/html; charset=\"utf-8\"
Content-Transfer-Encoding: 7bit
$message";
for($i=0;$i<count($_FILES['file']['name']);$i++) {
if(is_uploaded_file($_FILES['file']['tmp_name'][$i])) {
$attachment = chunk_split(base64_encode(file_get_contents($_FILES['file']['tmp_name'][$i])));
$filename = $_FILES['file']['name'][$i];
$filetype = $_FILES['file']['type'][$i];
$filesize += $_FILES['file']['size'][$i];
$message.="
--$boundary
Content-Type: \"$filetype\"; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$filename\"
$attachment";
}
}
$message.="
--$boundary--";
$allowed = array('image/jpg', 'image/jpeg', 'image/bmp', 'image/gif', 'image/png', 'application/pdf', 'application/msword', 'application/rtf', 'application/xls', 'application/dwg', 'application/pln', 'application/pla');
if ($filesize < 15000000)
{
if (in_array($filetype, $allowed) === true || $filesize < 100)
{
mail($to, $subject, $message, $headers);
echo "<div class=\"fixed-overlay\" style=\"display:block\" id=\"div1\"><div class=\"modal\" style=\"margin-left:-160px; top:42%\">
<div class=\"modal_container green\"><a onclick=\"hidetxt('div1'); return false;\" href=\"#\" title=\"Закрыть\" class=\"close\">X</a>
<b style=\"font-size:16px; padding:50px 20px 50px 20px\">Ваш запрос успешно отправлен!</b></div></div></div>";
}
else echo "<div class=\"fixed-overlay\" style=\"display:block\" id=\"div2\"><div class=\"modal\" style=\"margin-left:-280px; top:42%\">
<div class=\"modal_container red\"><a onclick=\"hidetxt('div2'); return false;\" href=\"#\" title=\"Закрыть\" class=\"close\">X</a>
<b>Ошибка, неправильный тип файла(ов).</b> <br><br> (допустимые типы: jpg, jpeg, bmp, gif, png, pdf, msword, rtf, xls, dwg, pln) <br><br>
<b>Попробуйте отправить запрос ещё раз, добавив файлы допустимых типов.</b></div></div></div>";
}
else echo "<div class=\"fixed-overlay\" style=\"display:block\" id=\"div3\"><div class=\"modal\" style=\"margin-left:-320px; top:42%\">
<div class=\"modal_container red\"><a onclick=\"hidetxt('div3'); return false;\" href=\"#\" title=\"Закрыть\" class=\"close\">X</a>
<b>Ошибка, размер файла(ов) превышает 15 Мб. <br><br> Попробуйте отправить запрос ещё раз, уменьшив количество файлов или их размер.</b></div></div></div>";
}
?>
Указал в "Reply-To" емэйл клиента.
У меня хостинг reg.ru, по-моему там SPF и DKIM настраиваются автоматически. Сайт запускал "с нуля" и когда настраивал почту, настройки уже стояли (то ли SPF, то ли DKIM, сейчас уже забыл). Короче, со своими адресами проблем нет.