@Maxy2000
Начинающий программист

Беспл. хостинг beget не отправляет письма по php командой mail?

Создал форму обратной связи через input (код ниже), далее загрузил на бесплатный хостинг beget, выставил PHP 7 версии в настройках сайта.
Не отправляются письма на почту.
Использую стандартный метод POST через команду mail PHP
3 дня мучаюсь, не могу понять что не так. Подскажите пжл.
Код прикладываю.

Index. html
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <title>Заголовок</title>
</head>

<body>
	<footer>
		<h2>Контактная форма</h2>
		<div class="form-container">
			<div class="note"></div>
			<div class="fields">
				<form class="ajax-contact-form" action="">
					<p><input type="text" name="name" value="" placeholder="Имя"></p>
					<div class="row">
						<div class="col"><input type="tel" name="tel" value="" placeholder="Телефон"></div>
						<div class="col"><input type="email" name="email" value="" placeholder="E-mail"></div>
						</div>
					<label>Текст</label>
					<textarea name="message" cols="40" rows="3"></textarea>
					<input type="submit" name="submit" class="form-container__btn" value="Отправить">
				</form>
			</div>
		</div>
	</footer>
	<script src="contactform.js"></script>
</body>

</html>


Contactform.js
jQuery(document).ready(function($) {

$(".ajax-contact-form").submit(function() {
var str = $(this).serialize();

$.ajax({
type: "POST",
url: "http://электрошуга.рф/contact.php",
data: str,
success: function(msg) {
if(msg == 'OK') {
result = '<p>Ваш заказ принят</p>';
$(".fields").hide();
} else {
result = msg;
}
$('.note').html(result);
}
});
return false;
});
});


Contact.php
<?php

$post = (!empty($_POST)) ? true : false;

if($post)
{
$email = trim($_POST['email']);
$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$message = htmlspecialchars($_POST['message']);
$tel = htmlspecialchars($_POST["tel"]);
$error = '';

if(!$name)
{
$error .= 'Пожалуйста введите ваше имя<br />';
}

// Проверка телефона
function ValidateTel($valueTel)
{
$regexTel = "/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/";
if($valueTel == "") {
return false;
} else {
$string = preg_replace($regexTel, "", $valueTel);
}
return empty($string) ? true : false;
}
if(!$email)
{
$error .= "Пожалуйста введите email<br />";
}
if($email && !ValidateTel($email))
{
$error .= "Введите корректный email<br />";
}
if(!$error)

// (length)
if(!$message || strlen($message) < 1)
{
$error .= "Введите ваше сообщение<br />";
}
if(!$error)
{


$name_tema = "=?utf-8?b?". base64_encode($name) ."?=";

$subject ="Новая заявка с сайта domain.name";
$subject1 = "=?utf-8?b?". base64_encode($subject) ."?=";
/*
$message ="\n\nСообщение: ".$message."\n\nИмя: " .$name."\n\nТелефон: ".$tel."\n\n";
*/
$message1 ="\n\nИмя: ".$name."\n\nТелефон: " .$tel."\n\nE-mail: " .$email."\n\nСообщение: ".$message."\n\n";	


$header = "Content-Type: text/plain; charset=utf-8\n";

$header .= "From: Новая заявка <hhhop53@gmail.com>\n\n";	
$mail = mail("hhhop53@gmail.com", $subject1, iconv ('utf-8', 'windows-1251', $message1), iconv ('utf-8', 'windows-1251', $header));

if($mail)
{
echo 'OK';
}

}
else
{
echo '<div class="notification_error">'.$error.'</div>';
}

}
?>
  • Вопрос задан
  • 2991 просмотр
Пригласить эксперта
Ответы на вопрос 3
AlexNest
@AlexNest
Работаю с Python/Django
1.Оформляйте код согласно правилам.
2.Жалобы на работу сервисов (как этого, так и сторонних - желательно задавать тех. поддержке)
3. Касательно вопроса: невозможность отправлять письма - ограничение бесплатного хостинга (для стимуляции покупки/усложнения спама)
Ответ написан
Комментировать
SagePtr
@SagePtr
Еда - это святое
Бесплатные хостинги не позволяют отправлять почту, иначе это будет халявой для различных спамеров. А если бы и позволяли - то почтовые сервера давно бы их в блеклист добавили из-за обилия спама с них - и письма получателю всё равно попасть не смогли. Да что там почта, многие бесплатные хостинги вообще фильтруют исходящие подключения, чтобы злоумышленники не могли с них осуществлять атаки на другие ресурсы.
Ответ написан
Комментировать
@zkrvndm
Софт для автоматизации
Используй SMTP для отправки письма, на бесплатном хостинге встроенная отправка писем не работает.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы