Здравствуйте. На нелюбимой работе дали задание. Сам пытался сделать, получается криво и не работает. Помогите пожалуйста. Нужно сделать текстовое поле и кнопку отправки письма с содержимым поля на почту. Почту в примере можете использовать рандомную или несуществующую, сам поменяю. Покажите пожалуйста код для этого дела если кто может. А с простого компьютера без соответствующего программного обеспечения (стоит только опенсервер) будет письмо отправляться?
@Invoker есть такой инструмент google forms, можешь любые формы создать без знания языков программирования и все отправки форм будут записываться и доступны только тем кто их создал и ещё кому ты доступ дашь
я сторонние ресурсы не должен использовать, мне нужно страничку на сайте организации забомбить вопрос еще актуален, жопа горит, не хочется с заданием медлить я на испытательном сроке и не хочется в грязь лицом упасть. могу свой код показать, но там нечем особо хвастаться.
первый файл Html Код (Text): <html> <form action="otpravka.php" method="post> Дата <INPUT TYPE="TEXT" NAME="data" VALUE="" SIZE="20"> Название <INPUT TYPE="TEXT" NAME="nazvanie" VALUE="" SIZE="20"> <br> Заголовок <INPUT TYPE="TEXT" NAME="zagolovok" VALUE="" SIZE="20"><br> Текст <textarea rows="10" cols="45" name="tekst"></textarea><br> <input type="submit" value="Отправить"> </form> </html> второй Php Код (Text): <?php $data = $_POST['data']; $nazvanie = $_POST['nazvanie']; $zagolovok = $_POST['zagolovok']; $tekst = $_POST['tekst']; mail("paleblueeyesjustdoit@yandex.ru", $nazvanie, $tekst); ?> сайт не на хостинге, это внутренний сайт, на локальном сервере
@Invoker там на компьютере есть интернет? кто-то настраивал чтобы через php почта отправлялась? по идее работать должно, если бы настроена была бы отправка почты
можно почту завести на mail.ru например и через неё отправлять, если надо может завтра код напишу, версия какая PHP установлена?
ребят помогите написать еще код для прикрепления файлов к письму, перерыл интернеты, доступных для чайника советов нет. в форме отправки письма должна быть кнопка прикрепления файлов (картинки)
@Invoker строка 68-79 файл index.php там нужно в четырёх местах прописать свои данные от почты яндекса --- Добавлено --- строку 96 надо закомментировать или удалить
здравствуйте еще раз! снова нужна помощь. сейчас код вот такой PHP: <form enctype="multipart/form-data" action="" method="post"> Дата <INPUT TYPE="TEXT" NAME="data" VALUE="" SIZE="20"> <br> Название <INPUT TYPE="TEXT" NAME="nazvanie" VALUE="" SIZE="20"> <br> Заголовок <INPUT TYPE="TEXT" NAME="zagolovok" VALUE="" SIZE="20"><br> Текст <textarea rows="10" cols="45" name="tekst"></textarea><br> <input type="file" name="photo" multiple accept="image/*,image/jpeg"><br> <input type="submit" value="Отправить"> </form> <?php if (empty ($_POST['data'])) { echo "Не введен Пароль"; } ?> до этого в экшн стоял пшп файл, теперь мне нужно убрать этот файл оставить только одну штмл страничку и весь код уместить на ней. нужно сделать проверку ввода текстовых полей (если не пустые то после нажатия на кнопку отправка выполняется функция майл, я ее еще не приписал, но предположим так) я не знаю как это реализовать, помогите пожалуйста. у меня в этом коде функция пшп на проверку ввода выполняется еще и до отправки, так не должно быть
подключил файл к сайту заполнил текстовое поле и прикрепил рандомный файл, выдает ошибку Mailer Error: You must provide at least one recipient email address.Ошибка! у нас почта внутренняя и письма должны отправляться именно по ней без выхода в интернет. блин не люблю пользоваться чужим кодом который не понимаю(
отправляете через mail()? тогда надо убрать SMTP настройки, убери PHP: $mail->isSMTP(); если не поможет, то вот это удали PHP: //Tell PHPMailer to use SMTP $mail->isSMTP(); //Enable SMTP debugging // 0 = off (for production use) // 1 = client messages // 2 = client and server messages $mail->SMTPDebug = 0; //Ask for HTML-friendly debug output $mail->Debugoutput = 'html'; //Set the hostname of the mail server $mail->Host = 'smtp.yandex.ru'; // use // $mail->Host = gethostbyname('smtp.gmail.com'); // if your network does not support SMTP over IPv6 //Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission $mail->Port = 465; //Set the encryption system to use - ssl (deprecated) or tls $mail->SMTPSecure = 'ssl'; //Whether to use SMTP authentication $mail->SMTPAuth = true; //Username to use for SMTP authentication - use full email address for gmail $mail->Username = "логин от почты яндекса"; //Password to use for SMTP authentication $mail->Password = "пароль от почты яндекса"; спрашивай, что не понятно
убрал смтп, ошибка: Mailer Error: Could not instantiate mail function.Ошибка! сейчас попробую другие строки убрать --- Добавлено --- закомментировал оба вариаанта выдает ошибку: Mailer Error: Could not instantiate mail function.Ошибка!
какой файл в результате получился и выдаёт ошибку? --- Добавлено --- в документации есть в чём может быть проблема https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting#could-not-instantiate-mail-function
PHP: <?php header('Content-Type: text/html; charset=utf-8'); require 'phpmailer/PHPMailerAutoload.php'; ?> <!DOCTYPE html> <html> <head> <title></title> </head> <body> <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { $required_fields = [ 'text' => 'Сообщение', ]; $errors = array_diff_key($required_fields, $_POST); $uploaddir = 'uploads/'; $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); if ($_FILES['userfile']['error'] !=0 || !move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { $errors[] = 'Ошибка при загрузки файла!'; } if (is_array($errors) && count($errors)>0) { echo '<br>Заполните поля:'; foreach ($errors as $name) { echo '<br>'.$name; } } else { //Create a new PHPMailer instance $mail = new PHPMailer; //Set mail encoding $mail->CharSet = 'UTF-8'; //Tell PHPMailer to use SMTP //$mail->isSMTP(); //Enable SMTP debugging // 0 = off (for production use) // 1 = client messages // 2 = client and server messages /*$mail->SMTPDebug = 0; //Ask for HTML-friendly debug output $mail->Debugoutput = 'html'; //Set the hostname of the mail server $mail->Host = 'smtp.yandex.ru'; // use // $mail->Host = gethostbyname('smtp.gmail.com'); // if your network does not support SMTP over IPv6 //Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission $mail->Port = 465; //Set the encryption system to use - ssl (deprecated) or tls $mail->SMTPSecure = 'ssl'; //Whether to use SMTP authentication $mail->SMTPAuth = true; //Username to use for SMTP authentication - use full email address for gmail $mail->Username = "логин от почты яндекса"; //Password to use for SMTP authentication $mail->Password = "wenf";*/ //Set who the message is to be sent from $mail->setFrom('infweb@dtdm.ru'); //Set who the message is to be sent to $mail->addAddress('infweb@dtdm.ru'); //Set the subject line $mail->Subject = 'Форум php.ru'; //Read an HTML message body from an external file, convert referenced images to embedded, //convert HTML into a basic plain-text alternative body $mail->msgHTML(nl2br($_POST['text'])); //Replace the plain text body with one created manually $mail->AltBody = $_POST['text']; //Attach an image file $mail->addAttachment($uploadfile); //send the message, check for errors if (!$mail->send()) { echo "Mailer Error: " . $mail->ErrorInfo; echo 'Ошибка!'; } else { echo "Письмо отправили!"; } //delete file @unlink($uploadfile); } } ?> <br> <form enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF']?>" method="POST"> <textarea name="text" rows="5" cols="35"></textarea> <br> <input type="file" name="userfile"> <br> <input type="submit" value="Отправить"> </form> </body> </html> *