Опишу приём заявок на примере одного сайта. Остальные работают по схожей схеме или ещё проще.
При отправке формы с сайта она делает AJAX POST запрос к сервису. Передаваемые данные:
- type - обязательно;
- name - обязательно;
- phone или tel (разные формы по разному настроены) - обязательно;
- pageTitle (заголовок страницы откуда запрос) - обязательно;
- date - дата праздника;
- text - передаётся не во всех формах.
Тема письма определяется на основе type как-то так:
switch ($this->type) {
case 'callback':
$this->subject = 'Заказ обратного звонка';
break;
case 'certificate':
$this->subject = 'Заявка на сертификат';
break;
case 'discount-5000':
$this->subject = 'Заявка на скидку 5000';
break;
case 'snow-party':
$this->subject = 'Заказ снежной вечеринки';
break;
case 'all-inclusive':
$this->subject = 'Заказ праздника под ключ';
break;
default:
$this->subject = 'Заказ обратного звонка';
}
Тело письма определяется как-то так:
$defaults = ['text' => '-', 'pageTitle' => 'не определено'];
$data = array_merge($defaults, $this->data);
$text = "";
if (!empty($data["date"]))
$text .= 'Дата праздника: ' . $data["date"] . '<br>';
$text .= '
Имя заказчика: ' . $data["name"] . '<br>
Телефон: ' . $data["tel"] . '<br>
Подробности: ' . $data["text"] . '<br>';
$text .= "<br><i>отправлено со страницы: «{$data['pageTitle']}»</i>";
$this->msgHTML($text);
Вот почти так работает сейчас отправка заявок. В ответ на обращение сервис отвечает кодом 200, если всё ОК и другим кодом, если что-то не получилось. Сейчас отправка работает через сервера Яндекса. Логины и пароли для SMTP могу прислать. Желательно организовать очередь заявок, чтобы отправка заявки не заставляла ждать клиента пока завершится SMTP.
Для каждого из сайтов пришлю такие же наборы кодов, чтобы разработчику было проще. На сайте нужно будет сменить во всех формах атрибут action.