От автора: приветствую вас, друзья. Данная статья будет продолжением статьи, в которой мы реализовывали отправку формы на email с помощью PHP функции mail(). В этой статье мы узнаем, как сделать форму отправки сообщений с сайта через SMTP популярных почтовых сервисов. Приступим?.
Исходные файлы текущей статьи вы можете скачать по ссылке.
Вы можете задать вполне логичный вопрос: а чем не устраивает функция mail(), которая замечательно работает на локальном сервере? Все дело в том, что в настоящее время работоспособность данной функции на реальном хостинге стоит под большим вопросом. Порой хостер просто отключает отправку писем со своего сервера, часто письма просто не доходят до адресата и попадают в спам.
Именно по этим причинам и рекомендуется использовать для отправки писем сторонние SMTP сторонних популярных сервисов: gmail.com, yandex.ru, mail.ru и т.п. Ну а отправить письмо нам помогут различные библиотеки, например замечательная библиотека PHPMailer. Эта библиотека достаточно проста в использовании и универсальна. PHPMailer позволяет отправлять не только простые письма, но и письма в формате HTML, письма с вложениями, в общем, библиотека умеет все, что необходимо для отправки сообщений с сайта.
Начнем со скачивания архива с библиотекой и подключения его к обработчику формы, у нас это файл mail.php:
1 |
require 'phpmailer/PHPMailerAutoload.php'; |
Теперь нам необходимо создать объект подключаемого класса библиотеки и произвести его необходимую настройку. Здесь нам потребуется реальный почтовый ящик, который будет использован для отправки писем. Я использую тестовый почтовый ящик, зарегистрированный в mail.ru. По запросу в Гугле mail.ru smtp можно найти необходимые настройки, которые мы используем. Точно таким же образом мы можем найти настройки smtp других почтовых сервисов.
Итоговый код обработчика будет выглядеть следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php $message = "Имя: {$_POST['name']}<br>"; // добавляем имя в текст $message .= "Телефон: {$_POST['phone']}"; // добавляем телефон в текст require 'phpmailer/PHPMailerAutoload.php'; $mail = new PHPMailer; $mail->isSMTP(); $mail->Host = 'smtp.mail.ru'; $mail->SMTPAuth = true; $mail->Username = 'mailer_test_2014'; // логин от вашей почты $mail->Password = '!mailer_2014!'; // пароль от почтового ящика $mail->SMTPSecure = 'ssl'; $mail->Port = '465'; $mail->CharSet = 'UTF-8'; $mail->From = 'mailer_test_2014@mail.ru'; $mail->FromName = 'Андрей'; $mail->addAddress('matroskin8@mail.ru', 'Андрей'); $mail->isHTML(true); $mail->Subject = 'Заказ обратного звонка'; $mail->Body = $message; if( $mail->send() ){ echo '<p style="color: green;">Ваше сообщение отправлено</p>'; }else{ echo '<p style="color: red;">Ошибка!</p>'; } |
Здесь я не буду подробно останавливаться на настройках, которые мы использовали, для этого вы можете посмотреть наш видеоурок Библиотека PHPMailer. Отправка почты через SMTP. Проверим, работает ли отправка писем. В форме мы видим сообщение о том, что письмо было успешно отправлено:
Зайдем в почтовый ящик и убедимся в этом:
Как видим, письмо успешно доставлено адресату, все работает. Ну а на этом текущую статью мы завершаем. Дополнительно по работе с формами вы можете посмотреть этот урок. Удачи!