Задать вопрос
@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>';
}

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

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

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