Як зробити форму відправки повідомлень на сайті

345

Від автора: вітаю вас, друзі. Дана стаття буде продовженням статті, в якій ми реалізовували відправку форми на email з допомогою PHP функції mail(). У цій статті ми дізнаємося, як зробити форму відправки повідомлень з сайту через SMTP популярних поштових сервісів. Приступимо?.

Вихідні файли поточної статті ви можете завантажити за посиланням.

Ви можете поставити цілком логічне запитання: а чим не влаштовує функція mail(), яка чудово працює на локальному сервері? Вся справа в тому, що в даний час працездатність даної функції на реальному хостингу стоїть під великим питанням. Деколи хостер просто відключає відправку листів зі свого сервера, часто листи просто не доходять до адресата і потрапляють в спам.

Саме з цих причин і рекомендується використовувати для відправки листів сторонні SMTP сторонніх популярних сервісів: gmail.com, yandex.ru, mail.ru і т. п. Ну а відправити листа нам допоможуть різні бібліотеки, наприклад чудова бібліотека PHPMailer. Ця бібліотека досить проста у використанні і універсальна. PHPMailer дозволяє відправляти не тільки прості листи, але і листи у форматі HTML, листи з вкладеннями, загалом, бібліотека вміє все, що необхідно для відправки повідомлень з сайту.

Почнемо зі скачування архіву з бібліотекою та підключення його до обробника форми, у нас це файл mail.php:

require ‘phpmailer/PHPMailerAutoload.php’;

Тепер нам необхідно створити об’єкт підключається класу бібліотеки і зробити його необхідну настройку. Тут нам знадобиться реальну поштову скриньку, який буде використаний для відправки листів. Я використовую тестовий поштову скриньку, зареєстрований в mail.ru. За запитом в Гуглі mail.ru smtp можна знайти необхідні налаштування, які ми використовуємо. Точно таким же чином ми можемо знайти налаштування smtp інших поштових сервісів.

Підсумковий код обробника буде виглядати наступним чином:

“; // додаємо ім’я в текст
$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 = ‘[email protected]’;
$mail->FromName = ‘Андрій’;
$mail->addAddress(‘[email protected]’, ‘Андрій’);
$mail->isHTML(true);
$mail->Subject = ‘Замовлення зворотного дзвінка’;
$mail->Body = $message;
if( $mail->send() ){
echo ‘

Ваше повідомлення надіслано

‘;
}else{
echo ‘

Помилка!

‘;
}

Тут я не буду детально зупинятися на установках, які ми використовували, для цього ви можете подивитися наш відеоурок Бібліотека PHPMailer. Відправка пошти через SMTP. Перевіримо, чи працює відправка листів. У формі ми бачимо повідомлення про те, що лист було успішно надіслано:

Як зробити форму відправки повідомлень на сайті

Зайдемо в поштову скриньку і переконаємося в цьому:

Як зробити форму відправки повідомлень на сайті

Як бачимо, лист успішно доставлено адресату, все працює. Ну а на цьому поточну статтю ми завершуємо. Додатково по роботі з формами ви можете подивитися цей урок. Удачі!