Вменяемая инструкция к PHPMailer “Отправка писем и файлов на почту”

Вы сейчас читаете устаревшую статью. Новая находится по ссылке ниже:

Прошло несколько лет, но у вас всё также нет выхода, и PHPMAILER — это самый простой способ отправлять со своего сайта письма на почту.

Вот что вы можете получить в итоге. Пощупать: /https://jsfiddle.net/dzLh63oe/

Это инструкция по добавлению на ваш сайт PHPMailer и отправки писем с прикреплёнными файлами к вам на почту без перезагрузки страницы.

Здесь будет инструкция для более простой базовой версии формы, без анимации и валидаций на чистом JavaScript. Навороченную версию формы (та, что на картинке) вы можете скачать по ссылке в конце статьи.

Переходим на сайт https://github.com/PHPMailer/PHPMailer и скачиваем последнюю версию

В начале кликаем по “Clone or Download”, затем по “Download ZIP”

Во всём архиве нам нужны только 3 файла:

PHPMailer\src\PHPMailer.php
PHPMailer\src\SMTP.php
PHPMailer\src\Exception.php

Всё остальное, что хранится на Github — на*уй не нужно, можете удалять.

Этот пункт вы можете пропустить. Он не является обязательным

Файлы, написанные разработчиками PHPMailer, содержат немереное количество мусора, состоящего из одних комментариев (зачем?!). Вес этих трёх файлов вместе с комментариями равен 196кб, после удаления комментов вес составит 72кб. Почти в 3 раза…

Я предлагаю удалить все комментарии в файлах с помощью какого-нибудь “PHP минификатора”. Можете использовать любой, я взял (первый попавшийся) http://php-minify.com

  1. Открываете файл PHPMailer.php
  2. Копируете содержимое файла
  3. Вставляете в форму на сайте php-minify и жмёте “COMPRESS”
  4. Результат пересохраняете в новом файле с тем же названием

Процедуру повторяете со всеми тремя файлами.

Для наглядности файл Exception.php

Слева файл до сжатия, справа он же после удаления мусора

И теперь помещаем эти 3 файла в наш проект. Я создал специально для этих файлов папку под названием phpmailer

Создадим файл send.php с таким содержанием

Здесь вам нужно отредактировать эти поля под себя:

// Формирование самого письма
$title = "Заголовок письма";
$body = "Само письмо"
// Настройки вашей почты
$mail->Host = 'smtp.yandex.ru'; // SMTP сервера вашей почты
$mail->Username = 'your_login'; // Логин на почте
$mail->Password = 'password'; // Пароль на почте
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
// Адрес самой почты и имя отправителя
$mail->setFrom('mail@yandex.ru', 'Имя отправителя');
// Получатель письма
$mail->addAddress('youremail@yandex.ru');
$mail->addAddress('youremail@gmail.com'); // Ещё один, если нужен

Сохраняем этот файл send.php и помещаем его в корень сайта

В примере указаны настройки для Яндекса. Вы можете использовать любую почту для отправки. Для изменения почты отправки, к примеру, на Gmail — нужно изменить эти поля:

$mail->Host = ‘smtp.gmail.com’; // SMTP сервер
$mail->SMTPSecure = ‘ssl’; // шифрование
$mail->Port = 465; // Порт

Теперь поместим эту форму в нужное место на вашем сайте

Обратите внимание на onsubmit. Там вторым аргументом должно быть указано имя файла, то есть send.php.

Нужно теперь просто где-то в коде разместить эту функцию. Вы можете её скопировать в свой script файл, который уже подключён в <head>, либо вставить его после закрывающего тега </body>.

Форма у вас должна выглядеть вот так:

И в случае успеха (или неудачи) вы должны получить всплывающее сообщение от браузера, мол “Сообщение отправлено” или “Ошибка…”.

Это очень частый вопрос, где я с полной уверенностью могу сказать: 60% причин ошибок — это ваш хостинг, 30% — ваша почта, 9% — вы неверно указали данные от почты, а 1% причин —ты, сука, даун, который решил изменить код, а потом начинаешь искренне удивляться, почему ничерта не работает.

Чтобы узнать, в чём причина, нужно раскомментировать вот эту строчку кода (убрать //):

//$mail->SMTPDebug = 2

Теперь в браузере нужно открыть консоль (F12) > вкладка “console” и отправить сообщение. У вас должна появиться новая строчка (список), которую нужно раскрыть:

Причина: Error: authentication failed: Invalid user or password! , то есть неверно указаны данные почты.

Если для вас эти строчки, как иероглифы, и уверены, что ошибки в написании данных почты нет, то отправляете два письма: одно в тех.поддержку вашего хостинга, второе в тех.поддержку вашей почты с таким содержанием:

Привет. Пытаюсь настроить PHPMailer, но в логах у меня ошибка:
*СЮДА ВСТАВЛЯЕТЕ ЭТИ СТРОЧКИ ИЗ КОНСОЛИ*

Через некоторое время они ответят и письма начнут нормально уходить.

После того, настоятельно рекомендую снова закомментировать строчку c $mail->SMTPDebug = 2

Чистая базовая форма без выеб*нов: Скачать

Форма с валидацией почты и анимацией GSAP: Скачать

Настройки для других почт: https://snipp.ru/view/146

У этой формы есть минус: нет защиты от спама. Каптчу вам нужно отдельно подключать

И жмите на “Ладошки” (claps), чтоб поставить лайк

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store