Содержание
PHPmailer
Отправка писем и файлов на почту
Эта инструкция добавлена на ваш сайт PHPMailer и сообщений с прикреплёнными файлами к вам на почту без перезагрузки страницы.
Здесь будут инструкции для более простых форм версии, без анимации и валидаций на чистом JavaScript . Навороченную версию (та, что на картинке) вы можете скачать по ссылке в конце статьи.
Скачиваем PHPMailer
Переходим на сайт PHPMailer и скачиваем полную версию. Альтернативеая ссылка для загрузки.
Во всем архиве нам нужны только 3 файла:
- PHPMailer\src\PHPMailer.php
- PHPMailer\src\SMTP.php
- PHPMailer\src\Exception.php
Все остальное, что хранится на Github — не нужно, можно удалить.
Перемещаем файлы в проект
И теперь помещаем эти 3 файла в наш проект. Я создал специально для этих файлов файлы под названием phpmailer.
Создаём конфигурацию файла
Создал файл send.php с таким изменением
- send.php
<?php // Файлы phpmailer require ' phpmailer/PHPMailer.php ' ; require ' phpmailer/SMTP.php ' ; require ' phpmailer/Exception.php ' ; // Переменные, которые отправляют пользователю $ name = $ _POST [ ' name ' ]; $ email = $ _POST [ ' email ' ]; $ text = $ _POST [ ' text ' ]; $ file = $ _FILES [ ' myfile ' ]; // Формирование самого письма $ title = " Заголовок письма " ; $ body = " <h2>Новое письмо</h2> <b>Имя:</b> $ имя <br> <b>Почта:</b> $ электронная почта <br><br> <b>Сообщение:</b><br> $ text " ; // Настройки PHPMailer $ mail = new PHPMailer \ PHPMailer \ PHPMailer (); пытаться { $ mail- > isSMTP (); $ mail- > CharSet = " UTF-8 " ; $ mail- > SMTPAuth = true ; //$mail->SMTPDebug = 2; $ mail- > Debugoutput = function ( $ str , $ level ) { $ GLOBALS [ ' status ' ][] = $ str ;}; // Настройки вашей почты $ mail -> Host = ' smtp.yandex.ru ' ; // SMTP-сервер вашей службы $ mail -> Имя пользователя = ' ваш_логин ' ; // Вход на почту $ mail -> Пароль = ' пароль ' ; // Пароль на почте $ mail- > SMTPSecure = ' ssl ' ; $ mail -> Port = 465 ; $ mail -> setFrom ( 'mail@yandex.ru ' , ' Имя отправителя ' ) ; // Адрес приложения // Получаем письма $ mail -> addAddress ( 'youremail@yandex.ru ' ) ; $ mail -> addAddress ( 'youremail@gmail.com ' ) ; // Ещё один, если нужно // Прикрипление файлов к письму if (! empty ( $ file [ ' name ' ][ 0 ])) { for ( $ ct = 0 ; $ ct < count ( $ file [ ' tmp_name ' ]); $ ct ++) { $ uploadfile = tempnam ( sys_get_temp_dir (), sha1 ( $ file [ ' name ' ][ $ ct ])); $ filename = $ file [ ' name ' ][ $ ct ]; if ( move_uploaded_file ( $ file [ ' tmp_name ' ][ $ ct ], $ uploadfile )) { $ mail -> addAttachment ( $ uploadfile , $ имя_файла ); $ rfile [] = " Файл $ filename прикреплён " ; } еще { $ rfile [] = " Не удалось прикрепить файл $ filename " ; } } } // Отправка сообщения $ mail- > isHTML ( true ); $ mail- > Subject = $ title ; $ mail- > Body = $ body ; // Проверяем эффективность сообщений if ( $ mail- > send ()) { $ result = " success " ;} иначе { $ result = " error " ;} } catch ( Exception $ e ) { $ result = " error " ; $ status = " Сообщение не было отправлено. Причина ошибки: { $ mail -> ErrorInfo }" ; } // Отображение результата echo json_encode ([ " result " => $ result , " resultfile " => $ rfile , " status " => $ status ]); ?>
Загрузить готовый файл send.php
Здесь вам нужно отредактировать эти поля под себя:
// Формирование самого письма $title = "Заголовок письма"; $body = "Само письмо" // Настройки вашей почты $mail->Host = 'smtp.yandex.ru'; // SMTP-сервер вашей службы $mail->Username = 'your_login'; // Вход на почту $mail->Пароль = 'пароль'; // Пароль на почте $mail->SMTPSecure = 'ssl'; $mail->Порт = 465; // Адрес самой почты и имя отправителя $mail->setFrom( 'mail@yandex.ru ', 'Имя отправителя'); // Получатель писем $mail->addAddress( 'youremail@yandex.ru '); $mail->addAddress('youremail@gmail.com ' ); // Ещё один, если нужно
Внимание Необходимо использовать не пароль от администрации США, а«Пароль приложения». В управлении вашей службой, будь то Gmail, Yandex или Mailru — есть раздел.«Пароли приложения», где вы можете специально создать собственный сгенерированный пароль для PHPMailer.
Пример для службы yandex, регистрируемся и переходим в раздел «Пароли приложения», либо по ссылке:
https://id.yandex.ru/security/app-passwords, где получаем пароль приложения.
Примечание В основе указаны настройки для Яндекса . Вы можете использовать любую почту для отправки. Для изменения сообщений почты, например, в Gmail — нужно изменить эти поля:
$mail->Host = 'smtp.gmail.com';// SMTP-сервер $mail->SMTPSecure = 'ssl'; // шифрование $mail->Port = 465; // Порт
Сохраняем этот файл send.php и помещаем его в корень сайта.
Создаём HTML-форму
Теперь поместим эту форму в нужное место на вашем сайте
Обратите внимание на onsubmit . Там вторым аргументом должно быть указано имя файла, то есть send.php.
