Всем привет! Подскажите, что я делаю не так?
Хочу написать один универсальный класс для отправки писем на почту, в телеграм, а потом и в CRM, но пока задача стоит отправить только на почту. Этот класс должен уметь принимать все формы сразу. По умолчанию все должно работать примерно так:
1. Не все поля обязательны для заполнения
2. Проверяем пришло, что-то в $_POST или нет
3. Если пришло записываем в свойства, по умолчанию свойства = null, так как не все они могут быть заполнены.
4. Данные, которые пришли записываем в свойства класса.
5. Затем поочередно будем вызывать методы на отправку в почту, телеграм, CRM.
---- На стоанице с формами подключаю так :
<?php require_once('mail.php'); ?>
или отправляю через AJAX:
$(document).ready(function () {
$("form").submit(function () {
// Получение ID формы
var formID = $(this).attr('id');
// Добавление решётки к имени ID
var formNm = $('#' + formID);
var message = $(formNm).find(".msgs"); // Ищет класс .msgs в текущей форме и записываем в переменную
var formTitle = $(formNm).find(".formTitle"); // Ищет класс .formtitle в текущей форме и записываем в переменную
$.ajax({
type: "POST",
//url: 'modalform/mail.php',
url: 'mail.php',
data: formNm.serialize(),
success: function (data) {
// Вывод сообщения об успешной отправке
message.html(data);
formTitle.css("display","none");
setTimeout(function(){
//$(formNm).css("display","block");
$('.formTitle').css("display","block");
$('.msgs').html('');
$('input').not(':input[type=submit], :input[type=hidden]').val('');
}, 3000);
},
error: function (jqXHR, text, error) {
// Вывод сообщения об ошибке отправки
message.html(error);
formTitle.css("display","none");
// $(formNm).css("display","none");
setTimeout(function(){
//$(formNm).css("display","block");
$('.formTitle').css("display","block");
$('.msgs').html('');
$('input').not(':input[type=submit], :input[type=hidden]').val('');
}, 3000);
}
});
return false;
});
//для стилей формы
var $input = $('.form-fieldset > input');
$input.blur(function (e) {
$(this).toggleClass('filled', !!$(this).val());
});
});
Код класса:
<?php
class Mail {
public $name = strip_tags($_POST['name']);
public $phone = null;
public $email = null;
public $phone_email = null;
public $website = null;
public $message = null;
public $formInfo = null;
public function __construct(){
if(!isset($_POST)) {
$this->name = strip_tags($_POST['name']);
$this->phone = strip_tags($_POST['phone']);
$this->email = strip_tags($_POST['email']);
$this->phone_email = strip_tags($_POST['phone_email']);
$this->website = strip_tags($_POST['website']);
$this->message = strip_tags($_POST['message']);
$this->formInfo = strip_tags($_POST['$formInfo']);
$startmail = new Mail($_POST);
$startmail->sendmail();
}
}
public function sendmail () {
$to = "seotapki@yandex.ru"; /*Укажите адрес, на который должно приходить письмо*/
$sendfrom = "info@site.ru"; /*Укажите адрес, с которого будет приходить письмо */
$headers = "From: " . strip_tags($sendfrom) . "\r\n";
$headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";
$headers .= "Content-Transfer-Encoding: 8bit \r\n";
$subject = "$this->formInfo";
$message = "$this->name
$this->phone
$this->email
$this->phone_email
$this->formInfo
$this->message
$this->website
";
$send = mail ($to, $subject, $message, $headers);
if ($send){
echo '<p class="fail">Сообщение успешно отправлено!</p>';
} else {
echo '<p class="fail">Ошибка. Вы заполнили не все обязательные поля!</p>';
}
}
но что-то не так, всеравно не работает, что не так? почему не срабатывает метод
$startmail->sendmail();