Инструменты пользователя

Инструменты сайта


software:development:web:docs:web:php:phpmailer

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 ' ); // Ещё один, если нужно


:&9: Внимание Необходимо использовать не пароль от администрации США, а«Пароль приложения». В управлении вашей службой, будь то 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.

Дополнения и Файлы

Только авторизованные участники могут оставлять комментарии.
software/development/web/docs/web/php/phpmailer.txt · Последнее изменение: VladPolskiy

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki