Добрый день! Давайте разберемся с тем, что происходит, когда вы используете атрибут `action="mailto:"` в форме, и почему наблюдаются упомянутые вами проблемы.
### 1. Как работает `mailto:`?
Когда вы используете `mailto:` как `action` для формы, браузер обрабатывает это как ссылку для отправки электронной почты, а не как обычный обработчик формы. Вот как это работает:
- При нажатии на кнопку отправки формы, браузер создает ссылку типа `mailto:` с соответствующими параметрами, которые включают адрес получателя, тему и тело письма.
- Стандартное поведение для отправки формы с методом `POST` просто перенаправляет данные, но `mailto:` не поддерживает обработку POST-запросов. Вместо этого, браузер создает запрос на основе указанной информации и открывает почтовую программу.
### 2. Почему данные не попадают в тело письма?
Ваша форма использует `enctype="text/plain"`, что не является стандартным для отправки данных по электронной почте через `mailto:`. Метод `GET` может использоваться для формирования URL, в который добавляются параметры. Если вы хотите, чтобы данные передавались корректно, используйте `enctype` по умолчанию (который обычно `application/x-www-form-urlencoded`), но важно понимать, что `mailto:` не может адекватно обрабатывать это.
### 3. Преобразование запроса POST в GET
Когда браузер использует `mailto:`, он не выполняет стандартную отправку данных по методу `POST`. Вместо этого он создает URL и передает данные в формате строки запроса (который используется в `GET`), хотя в данной ситуации метод не имеет значения. В итоге, данные формируются как обычный `query string`, зачастую в не очень дружелюбном для чтения виде, и включены в тело `mailto:` ссылки.
### 4. Как избежать проблем с отправкой формы на почту
Чтобы избежать этих проблем, лучше использовать серверный скрипт для обработки формы и отправки данных на почту:
1. **Создайте серверный скрипт** — используйте PHP, Python или другой язык для обработки данных формы.
2. **Настройте `action` на ваш скрипт** — указывайте URL вашего скрипта как `action` в форме:
```html
<form action="your_script.php" method="post">
```
3. **Обработайте данные в скрипте** — получите данные из POST-запроса и используйте функции для отправки почты (например, `mail()` в PHP).
Пример PHP-скрипта, который отправляет электронное письмо:
```php
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST['cleint-name'];
$phone = $_POST['cleint-phone-number'];
$to = 'any@adress.net';
$subject = 'Новая заявка';
$message = "Имя: $name\nТелефон: $phone";
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com';
mail($to, $subject, $message, $headers);
echo "Сообщение отправлено!";
}
?>
```
Использование этого подхода гарантирует, что все данные будут правильно обработаны и отправлены на электронную почту.