Здравствуйте! Подскажите пожалуйста, почему не работает скрипт отправки на почту? Код (Text): <form action="index.php" method="POST"> <input name="numcas"> <input type="submit" onclick="send()" value="Отправить на почту"> </form> <? $message = $_POST['numcas']; $to = "...@bk.ru"; $from = "center.org"; ?> <script> function send(){ <?mail($to, $pagetitle, $message, "Content-type: text/plain; charset=\"utf-8\"\n From: $to");?> } </script>
Потому что при нажатии отправить на почту срабатывает JS а не PHP, игнорируя PHP: <? $message = $_POST['numcas']; $to = "...@bk.ru"; $from = "center.org"; ?> или наоборот, вообщем js тут не нужен
носорога с бульдогом скрестили (js и php) это js Код (Javascript): <script> function send(){} </script> а сама функция на php
Сделал без JS, тоже не работат: Код (Text): <? if(isset($_POST['submit'])){ $message = $_POST['numcas']; $to = "...@bk.ru"; $from = "center.org"; mail($to, $pagetitle, $message, "Content-type: text/plain; charset=\"utf-8\"\n From: $to"); } ?>
ONCLIC убрал js функцию в форме ? dkim spf настроен для почты ? А то какая почтовая служба приймет почту подозрительную ? минимум в спам закинет
PHP: <? mail($to, $pagetitle, $message, "Content- ?> с конкретными данными для теста сделай ... скорее всего тоже не отправится юзайте либу PHPMailer
Onclick убрал, да и с почтой все в порядке. Не понимаю, простой скрипт и не работает --- Добавлено --- Спасибо! Не отправляется все же
index.php: PHP: <?php if ( $_SERVER['REQUEST_METHOD'] === 'POST' ) { exit ( ( mail ( 'example@mail.ru', 'Lolosha', $_POST['numcas'] ?? 'капец' ) ? 'Ваше барахло успешно отправлено' : 'найн отправка' ) ); } ?> <form action="index.php" method="POST"> <input name="numcas"> <input type="submit" value="Отправить на почту"> </form>
Стандартная функция mail() не всегда работает. В таких случаях поможет отправка через smtp (yandex.ru, gmail.com, ukr.net, etc.) по ssl протоколу. Нагуглил код от Евгения Ипатова (SendMailSmtpClass.php во вложении), использую его для отправки почты: PHP: // пример использования $to = $_POST['to']; $subject = $_POST['subject']; $body = $_POST['body']; require_once "SendMailSmtpClass.php"; // подключаем класс $mailSMTP = new SendMailSmtpClass('admin@ukr.net', 'пароль_к_ящику', 'ssl://smtp.ukr.net', 'admin@ukr.net', 2525); // логин, пароль, хост, имя отправителя, порт); // заголовок письма $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=utf-8\r\n"; $headers .= "From: admin@ukr.net\r\n"; $headers .= "Date: " . date('r') . "\r\n"; $headers .= "X-Mailer: PHP/" . phpversion() . "\r\n"; $result = $mailSMTP->send($to, $subject, $body, $headers); // отправляем письмо // $result = $mailSMTP->send('Кому письмо', 'Тема письма', 'Текст письма', 'Заголовки письма'); if($result === true){ echo "Письмо успешно отправлено"; }else{ echo "Письмо не отправлено. Ошибка: " . $result; } Скрещивать js и php можно, но не в Вашем случае. Как правило, такое делается для создания динамического js-кода. В таких случаях лучше всего переименовать mycode.js в mycode.js.php, дабы не трогать файл .htaccess и дать понять пхп-машине, что в файле используется пхп-скрипт. Но важно понимать, что пхп-код будет выполнен при обращении к файлу, но никак не при нажатии кнопки. А вообще отправку почты лучше "повесить" на ajax без перезагрузки страницы. В заголовке формы дописываете: HTML: <form action="index.php" method="POST" onsubmit="send(); return false"> В итоге, при сабмите, страница перезагружена не будет, но будет выполнена функция send(), в которой Вам нужно будет получить значения полей формы, аяксом передать эту информацию пхп-скрипту (аля send.php), который по смтп отправит сообщение на нужный ящик, вернет результат действия в функцию send(), которая уведомит пользователя о том, что сообщение отправлено или всё пропало. В общем, копайте в сторону ajax. Использовать post с перезагрузкой сайта - не очень красивое решение. И на начальном этапе старайтесь не скрещивать php и js, в большинстве случаев в этом нет необходимости.