Надсилання пошти через smtp сервер. Надсилання пошти через SMTP з локального сервера

Надсилання пошти через SMTP з локального сервера дозволяє протестувати відправлення повідомлень із сайту, що знаходиться на локальній машині, або простіше кажучи, локальному сервері. Для цього можна використовувати будь-який поштовий сервіс yandex, google чи mail.ru.

Насамперед, SMTP (Simple Mail Transfer Protocol) - це широко використовується мережевий протокол, призначений для передачі електронної поштиу мережах TCP/IP. І такі протоколи мають усі популярні поштові сервіси.

З появою локальних серверів відпала необхідність вибору хостинг-провайдера для того, щоб перевірити працездатність окремих скриптів або cms-систем, а тим більше ще й платити за це. Набагато простіше все протестувати на комп'ютері, а потім можна і показати всім що «наробили».

Багато таких серверів мають вже вбудоване програмне забезпеченняі необхідний функціонал роботи з поштою, потрібно його лише правильно налаштувати.

Для перевірки працездатності такої пошти необхідний мінімум:

  • Як локальний сервер можна використовувати Openserver.
  • І простий скрипт, шаблон якого можна взяти трохи нижче.
  • Поштовий сервер можна використовувати будь-який.

Надсилання пошти php через SMTP-налаштування скрипту

Шаблон простенького скрипта, який можна скопіювати трохи нижче, або завантажити ще на сотнях подібних сайтів, необхідно відредагувати.

Для початку потрібно змінити у шаблоні скрипта деякі значення.
to - Змінюємо на поштова адресакуди буде надіслано поштове повідомлення.
subject - Тема листа
message - Саме повідомлення, або тіло листа.

Приклад мого скрипту:

Можна, звичайно, трохи розширити функціонал і зробити так, щоб скрипт видавав повідомлення про відправку пошти. Хоча насправді відправлення здійснює саме SMTP-сервер, а скрипт лише формує повідомлення.

Наприклад можна написати так:

Усі підставлені значення мають бути в лапках, інакше скрипт видасть помилку. Після цього можна зберегти скрипт до папки локального сервера.

Наприклад: domains/send/index.phpі розпочати налаштування відправки пошти через SMTP opensrerver.

Пошта буде приходити на будь-яку адресу, яка буде вказана у скрипті замість значення ‘to’ , але обробляти та надсилати цю пошту буде саме той SMTP, який буде вказаний у налаштуваннях openserver.

  1. Запускаємо сервер
  2. Відкриваємо модуль openserver із налаштуваннями в меню «пошта»
  3. Заповнюємо всі поля як показано на картинці, при цьому ім'я користувача, e-mail відправника та пароль підставляємо від реальної поштової скриньки на яндексі.

Зберігаємо налаштування та після того, як сервер буде перезапущено, можна звернутися до самого скрипту. З папки "Мої сайти", відкрити папку "send" в якій і знаходиться збережений раніше скрипт index.php.

Як тільки звернеться до цього скрипта, у новому вікні браузера з'явиться інформація про те, що скрипт відпрацював.

Після цього варто перевірити свій поштова скринька, адреса якого була вказана у скрипті, чи надійшов лист.

Якщо його немає, значить щось налаштовано неправильно, або лист потрапив до папки спам.

Всі інші налаштування виглядають аналогічно, але про всяк випадок додаткова інформаціяне завадить.

Для того, щоб налаштувати надсилання пошти через SMTP mail ru, необхідно просто замінити параметри яндексу на параметри mail ru.

А щоб не перебудовувати щоразу локальні сервер, найкраще налаштувати різні профілі Openserver. Як це зробити показано у відеоуроці.

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

Для кожного профілю (зовсім не важливо як він буде називатися), повинні бути зроблені свої налаштування, якщо, звичайно, планується використання різних за своїми параметрами скриптів, cms-систем і додатків.
Якщо ні, можна обійтися і налаштуваннями за замовчуванням.

Що ж до SMTP mail ru, то тут все едентично.

Змінюються дані яндексу на дані mail ru

Надсилання пошти через smtp google

Для того, щоб налаштувати надсилання пошти через SMTP гугла, варто трохи постаратися.

По-перше, створення самого профілю в гугле складніше, ніж в інших системах яндексу та mail ru
По-друге, система просто так не пропустить листа, навіть якщо вказати свої дані для входу. Для початку вона надішле лист у якому і буде вся необхідна інформація про подальші інструкції.

В іншому ж для гугла налаштовується так само. Змінюються лише всі дані.

Для налаштування надсилання пошти через інші SMTP всі дані будуть приблизно однакові.

Якщо у вас все вийшло і листи дійшли до вказаного адресата, то все зроблено правильно. Буде чудово, якщо ви поділітесь своїми напрацюваннями в коментарях.

2019-08-05

Здрастуйте, шановний відвідувачу!

Прошу вибачити мене за затримку в поновленні блогу. Але цьому цілком зрозуміле пояснення. Як-не-як, літо, дача, гості, ліс, вода та багато іншого, що не дозволило мені зайнятися питаннями створення сайту. Але зараз трохи звільнився, гості роз'їхалися, і думаю, що тепер точно зможу цьому приділити належну увагу.

Отже, після того, як в останній статті ми підключили пошту свого домену до одного з поштових сервісів, тепер подивимося, як можна надсилати email із сайту. Причому так, щоб наші листи не потрапляли до СПАМу, а надійно, з високим ступенемймовірності доставлялися до наших адресатів.

Взагалі, для надсилання листів до PHP існує вбудована функція mail(). Але слід зазначити, що незважаючи на простоту такого способу (у цьому випадку для надсилання листів достатньо вказати лише один рядок коду з певними параметрами), застосування такого варіанту має суттєвий недолік, пов'язаний із проблемою СПАМу.

Справа в тому, що фільтри антиСПАМу поштових серверів на стороні одержувача не дуже шанують листи, надіслані через функцію mail(). І здебільшого такі повідомлення фільтруються, або взагалі видалятися, не доходячи до адресата.

І щоб максимально виключити такі випадки, зазвичай застосовують інший варіант, у якому відправка листів здійснюється, ніби це робиться стороннім поштовим сервісом.

Такий спосіб називається надсиланням пошти через SMTP з авторизацією. Який ми сьогодні і розглянемо на прикладі відправлення форми зворотного зв'язку. Причому для цього будемо використовувати досить відому та популярну бібліотеку PHPMailer, що дозволяє просто організувати відправку листів через SMTP.

  • Як ми надсилатимемо листи зворотного зв'язку
  • Створюємо форму зворотного зв'язку
  • Встановлюємо бібліотеку PHPMailer
  • Формуємо скрипт надсилання пошти через SMTP
  • Перевіряємо відправку email
  • Вихідні файли сайту

Як ми надсилатимемо листи зворотного зв'язку

Перед тим, як приступити до практичної роботиз надсилання листів зворотного зв'язку, спочатку визначимося, як ми це робитимемо.

Форма зворотного зв'язку призначена для того, щоб користувач зв'язку з адміністратором сайту міг передати своє повідомлення. Зазвичай, така форма складається з кількох полів та кнопки "Надіслати".

В принципі, для відправки email достатньо використовувати лише кілька полів, які дають достатню інформацію про користувача та зміст повідомлення, такі як:

  • "Ім'я" – для введення імені відправника повідомлення;
  • "E-mail" – для адреси електронної пошти відправника;
  • "Тема повідомлення";
  • "Текст повідомлення".

Хоча можна додати інші. Наприклад, номер телефону, якщо, дійсно, це потреба.

У нашому випадку такі листи надсилатимуться на адресу адміністратора сайту з реальної поштової скриньки з авторизацією на тому поштовому сервісі, до якого підключено наш домен.

Так як у попередній статті ми зупинилися на перевірці підключення доменної пошти до сервісу Яндекс.Пошта, то й надсилатимемо пошту для цього варіанту. Хоча це не є принциповим. Нижче будуть відмічені ті опції, при зміні яких можна буде надсилати електронну пошту через поштовий сервер Mail.ru.

Як реальна поштова скринька, з якої надсилатимуться листи, будемо використовувати обліковий запис новоствореного користувача доменної пошти, скажімо з адресою [email protected]. А надсилатиме ці листи на поштову скриньку адміністратора [email protected], який раніше ми створили у попередній статті.

Таким чином відправником листа з форми зворотного зв'язку буде поштова скринька [email protected]., а одержувачем - [email protected]. При цьому вся інформація про користувача, який надіслав повідомлення з його змістом, буде передаватися в тілі надісланого листа.

Створюємо форму зворотного зв'язку

Після того, як ми визначилися з самим порядком надсилання листів, тепер створимо форму зворотного зв'язку, за допомогою якої це робитимемо.

Нижче показаний HTML-код такої форми, який ми розмістимо на сторінці "Контакти" (файл kontakty.php у каталозі articles).

    "article" >

    Контакти

    Зворотній зв'язок

    "contact" action = "#" method = "post" >

    Форма зворотнього зв'язку

    З усіх питань, звернень та ділових пропозицій Ви можете зв'язатися через наведену нижче форму зворотного зв'язку.

    "contact-block" >

    "contact-input" >

    "text" id = "contact-name" name = "contact-name" title = "Ім'я має бути російською і містити не менше 3 символів" pattern = "{3,}" required >

  1. "empty-contact" >

    "contact-input" >

    "email" id = "contact-email" name = "contact-email" required >

  2. "contact-subject" >

  3. "contact-comment" >

  4. "contact-button" >

    "submit" name = "contact-button" value = "Надіслати" >

Рис.1 HTML-код форми зворотнього зв'язку

Як зрештою виглядає наведена тут форма зворотного зв'язку, можна подивитися на наступному скріншоті.

Таким чином, потрібна форма створена. І тепер можна перейти до питань обробки та надсилання даних у вигляді поштового повідомлення.

Встановлюємо бібліотеку PHPMailer

Як зазначалося раніше, для відправки пошти ми будемо використовувати бібліотеку PHPMailer, яка дозволить суттєво спростити відправку email через протокол SMTP з авторизацією на сторонньому поштовому сервісі.

Для її встановлення потрібно завантажити необхідні файли. Це можна зробити з веб-сервісу GitHub, використовуючи для цього Composer ( пакетний менеджерзалежностей для PHP). Або просто, завантажити необхідні файли звичайним чином.

скріншот 73

Нижче показано сторінку веб-сервісу GitHub, де зазначено посилання на звичайне завантаження бібліотеки PHPMailer.

Крім цього, останню версію 6.0.7, яка була збережена на момент написання цієї статті, можна завантажити з матеріалів, що додаються.

У будь-якому випадку отриманий архівний файл слід розпакувати, після чого витягнуту папку PHPMailer-master з усім вмістом помістити в корінь сайту. При цьому для простоти можна її перейменувати в PHPMailer. Нижче наведено вміст папки PHPMailer, розміщеної в кореневий каталог сайту.

Таким чином, ми встановили бібліотеку PHPMailer. Після чого можемо зайнятися формуванням скрипту, за допомогою якого надсилатимемо з нашого сайту поштові повідомлення.

Формуємо скрипт надсилання пошти через SMTP

Для складання скрипта цілком достатньо скористатися рекомендаціями щодо застосування PHPMailer, наведеними на сторінці GitHub, яку ми використовували для скачування бібліотеки.

У них, зокрема, зазначається, що на початку скрипту потрібно імпортувати класи PHPMailer у глобальний простір імен. І надано конкретні рядки відповідного коду. А також наведено приклади використання властивостей та методів PHPMailer, у тому числі і для варіанта надсилання пошти через SMTP.

Але якщо цього недостатньо, можна скористатися і документацій, у якій є опис всіх властивостей і методів цієї бібліотеки.

скріншот 74

Нижче наведено код скрипту надсилання пошти з форми зворотного зв'язку через авторизацію SMTP. Де всі рядки, що стосуються PHPMailer, дано з пояснення та виділено світлим тлом.

Решта, включаючи фрагменти, що стосуються отримання та обробки даних із форми, які нам раніше вже доводилося використовувати в інших обробниках, позначені темним тлом. Досить докладно про них йшлося раніше у статті, присвяченій саме питанням отримання та перевірки даних з форми в PHP. Де також розповідалося про універсальну користувальницьку функцію перевірки та обробки даних форми check_symbol().

Даний скрипт розмістимо в тому самому файлі kontakty.php, в якому ми сформували форму зворотного зв'язку.

    //----Скрипт надсилання пошти через SMTP за допомогою PHPMailer----

    //Імпорт класів PHPMailer до глобального простору імен. Вони мають бути у верхній частині скрипту, а не всередині функції

    use PHPMailer\PHPMailer\PHPMailer;

    use PHPMailer\PHPMailer\Exception;

    if (!empty($_POST["contact-button" ])) (

    $name = $_POST["contact-name"];

    $name = check_symbol ($name, "Ім'я", "1", "/^+\z/iu");

    $email = $_POST["contact-email" ];

    $email = check_symbol ($email, "E-mail", "1", "/^+@(+\.)+(2,6)\z/i");

    $subject = $_POST["contact-subject"];

    $subject = check_symbol ($subject, "Тема повідомлення", "1", "0");

    $comment = $_POST["contact-comment"];

    $comment = check_symbol ($comment, "Текст повідомлення", "1" , "0" );

    if (!empty($GLOBALS["alert" ])) (

    $alert = "Дані з форми не надіслано. Виявлено такі помилки: \n".$alert;

    include"alert.php";

    else {

    //Підключення бібліотеки

    require"PHPMailer/src/PHPMailer.php";

    require"PHPMailer/src/Exception.php";

    require"PHPMailer/src/SMTP.php";

    $mail = new PHPMailer(); //Ініціалізація класу

    $from = " [email protected]" ; //Адреса пошти, з якої йде відправка листа

    $to = " [email protected]" ; //Адреса одержувача

    $mail -> isSMTP(); //Застосування протоколу SMTP

    $mail -> Host = "smtp.yandex.ru"; //Адреса поштового сервера

    $mail -> SMTPAuth = true ; //Включення режиму авторизації

    $mail -> Username = " [email protected]" ; //Логін від доменної пошти, підключеної до стороннього поштового сервісу (в даному випадку в Яндекс.Пошта)

    $mail -> Password = "27MrDon89"; //Пароль від доменної пошти

    $mail -> SMTPSecure = "ssl"; //Протокол шифрування

    $mail -> Port = "465"; // Порт сервера SMTP

    $mail -> CharSet = "UTF-8"; //Кодування

    $mail -> setFrom ($from, "Адміністратор"); //Адреса та ім'я відправника

    $mail -> addAddress ($to, "Адміністратор"); //Адреса та ім'я одержувача

    $mail -> isHTML ( true ); //Встановлення формату електронної пошти в HTML

    $mail -> Subject = "Відправлено форму зворотного зв'язку"; //Тема листа (заголовок)

    $mail -> Body = "

    Ім'я відправника: $name

    Адреса відправника: $email

    Тема повідомлення: $subject

    Зміст повідомлення: $comment

    " ; //Вміст листа

    $mail -> AltBody = "Текст альтернативного листа"; //Альтернативний лист у разі, якщо поштовий клієнт не підтримує HTML

    $mail -> SMTPDebug = 0; //Включення налагодження SMTP: 0 - вимк (для штатного використання), 1 = повідомлення клієнта, 2 - повідомлення клієнта та сервера

    if($mail -> send ()) (

    $alert = "Повідомлено"; //Виведення повідомлення в діалоговому вікні браузера про успішне надсилання листа

    else {

    $alert = "Помилка, лист може бути відправлено: ".$mail -> ErrorInfo ; //Виведення повідомлення про помилку

    include"alert.php";

Рис.5 Скрипт для надсилання електронної пошти через SMTP з авторизацією

Як видно, всі рядки, які стосуються безпосередньо відправки поштового повідомлення, в яких задані необхідні методи та властивості, супроводжуються коментарями. Тому не має сенсу повторюватися, а можна зупинитися лише на деяких із них, які дійсно потребують додаткових пояснень, а саме:

1. У зв'язку з тим, що лист надсилається зі стороннього поштового сервісу, тут застосовані налаштування, що відповідають конкретному SMTP серверу. В даному випадку для варіанта використання сервера Яндекс.Пошта застосовані наступні значення властивостей:

  • Властивість Host(поз.28) - адреса поштового сервера зі значенням smtp.yandex.ru;
  • Властивість SMTPSecure
  • Властивість Port

Ці значення властивостей були взяті зі сторінки Яндекс.Допомога, наведеної на наступному скріншоті.

Але таку інформацію можна отримати з інших ресурсів. Для цього достатньо в пошуковій системі ввести відповідний запит, наприклад: "smtp сервер яндекс". Де можна знайти велику кількість посилань щодо цього питання.

Аналогічно значення налаштувань можна отримати і по інших SMTP серверах. Нижче показаний скріншот сторінки Допомоги Mail.ru, де відображено налаштування SMTP сервера поштового сервісу Mail.ru.

І таким чином, у разі використання стороннього SMTP сервера Mail.ru, повинні бути застосовані наступні значення властивостей класу PHPMailer:

  • Властивість Host(поз.28) – адреса поштового сервера (smtp.mail.ru);
  • Властивість SMTPSecure(поз.32) - протокол шифрування (ssl);
  • Властивість Port(Поз.33) - Порт сервера SMTP (465).

Подібний підхід слід застосовувати і для інших поштових сервісів.

2. У якості Username(поз.30) необхідно вказувати повну адресу поштової скриньки доменної пошти. В даному випадку як логін від поштової скриньки, з якою йде відправка листів, використовується " [email protected]".

Однак, якщо для надсилання листів використовувати обліковий запис не доменної пошти, а адресу безпосередньо до поштового сервісу, наприклад " [email protected]", то тоді логіном повинна бути лише частина адреси до знака "@". У цьому випадку логін мав би значення "feedback".

3. У PHPMailer передбачено властивість SMTPDebug(поз.50), що дозволяє відображати на екрані браузера різний рівень помилок. Така можливість значно полегшує знаходження проблем при налагодженні скрипту.

Зазвичай у штатному режимі, при встановленому значенні 0, виведення докладної інформації про помилку вимкнено. Але при виникненні проблем з надсиланням пошти або при налагодженні, для виведення більш змістовної інформації про помилку, можна використовувати інші значення.

Для того щоб подивитися, як це виглядає на практиці, тимчасово внесемо в налаштування якусь помилку. Наприклад, пароль від доменної пошти (властивість Password, Поз.31). А також для виведення докладної інформації про помилку, тимчасово встановимо у властивості SMTPDebug(поз.50) значення 1. Після, коли все буде налагоджено та перевірено, відключимо режим налагодження SMTP, замінивши 1 на 0.

У завершальній частині скрипта, після вказівки всіх необхідних властивостей та методів, для надсилання листа застосовано метод send()) (Поз.51). І якщо лист буде надіслано, і метод send()для об'єкту $mailповерне true, то у діалоговому вікні браузера через змінну $alertбуде виведено повідомлення про успішне надсилання пошти (поз.52).

У випадку ж, якщо пошта з якихось причин не змогла бути надіслана, і, відповідно, метод не зміг повернути істину, такий стан супроводжуватиметься відповідним повідомленням про помилку (поз.55).

Перевіряємо відправку email

Після того, як ми склали скрипт відправки пошти, звичайно, потрібно подивитися на результат нашої "творчості". Чи всі ми тут врахували, і чи не наробили жодних помилок.

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

А тут показано результат відправлення форми.

Де, з повідомлення в діалоговому вікні браузера видно, що лист не може бути надіслано через проблему з'єднання по SMTP.

Але, оскільки зараз властивості SMTPDebug(поз.50) присвоєно значення 1, то ми зможемо переглянути докладну інформацію про помилку і з'ясувати причину її виникнення.

На наступному скріншоті видно, що під час спроби з'єднання виявлено помилку автентифікації, що означає використання неправильного логіну або пароля.

Після усунення невідповідності пароля (раніше використовувався неправильний пароль для можливості перевірки виведення додаткової інформації про помилку) знову спробуємо відправити пошту.

Цього разу, ніби все пройшло вдало, і ми отримали повідомлення про успішне відправлення пошти. Очевидно, крім свідомо введеної тимчасової помилки в пароль від доменної пошти, жодних інших помилок ми не припустилися.

Але для того, щоб переконатися, що листа дійсно було доставлено до адресата, увійдемо до пошти з адресою [email protected]та подивимося на результат.

Як видно, лист із адреси [email protected], з якого ми надсилали поштове повідомлення з ім'ям "Зворотній зв'язок", до адміністратора сайту благополучно дійшло. При цьому в тілі листа є весь той вміст, який ми формували в скрипті з використанням даних, отриманих з форми зворотного зв'язку, а саме:

  • Ім'я відправника: Микола;
  • Адреса відправника: [email protected];
  • Тема повідомлення: Перевірка надсилання пошти;
  • Зміст повідомлення: Тестове повідомлення.

Тепер після успішної перевірки надсилання пошти можна буде вимкнути режим налагодження SMTP, призначивши властивості SMTPDebug(Поз.50) значення 0.

Таким чином ми виконали завдання створити інструмент відправки пошти через SMTP з авторизацією з використанням стороннього поштового сервера.

Наприклад, у наступній статті ми подивимося, як надсилати підтверджуючі листи для відновлення даних облікового запису зареєстрованого користувача.

Вихідні файли сайту

Вихідні файли сайту з оновленнями, які були зроблені в даній статті, можна завантажити з додаткових матеріалів, що додаються:

  • Файли каталогу www
  • Таблиці бази даних MySQL

Щоб певний сайт мав можливість якісно та продуктивно працювати, до його створення варто підійти максимально відповідально та виважено. На особливу увагу заслуговує вибір системи, яка буде використовуватися при створенні інтернет-магазину. Справа в тому, що комерційна платформа, що спеціалізується на продажах товарів чи послуг, повинна дозволяти реалізувати весь необхідний функціонал і бути зручною у використанні як для адміністраторів, які займаються обслуговуванням та наповненням сайтів, так і для клієнтів інтернет-магазинів. Багато людей і компаній, які постають перед питанням підбору CMS, що підходять для себе, аналізують: що вибрати Magento або OkayCMS. Давайте порівняємо особливості та можливості даних движків для сайтів.

Працюючи над власним сайтом, людині чи компанії належить докласти великих зусиль - тільки у такому разі можна розраховувати на позитивні результати та отримання дійсно ефективного інструменту. Одним з основних питань, яке належить вирішити ще до того, як розпочинати створення сайту, буде те, як визначитися з найбільш відповідним варіантом CMS. Далі ми порівняємо дві CMS: Joomla або OkayCMS, звернемо увагу на особливості кожної з них.

Наявність власного сайту - одна з основних вимог для ефективного бізнесу, що успішно працює. Статистика однозначно свідчить на користь зростання кількості покупок різних товарів та замовлень послуг через Інтернет. Зважаючи на це, більшість комерційних компаній вже усвідомлюють необхідність наявності власного сайту. Втім, лише факту наявності інтернет ресурсу ще недостатньо, щоб розраховувати на його ефективність, рентабельність і очікувану для бізнесу користь.

Під час підготовки до створення власного сайту або відкриття інтернет-магазину, необхідно взяти до уваги та проаналізувати чимало питань, а також вирішити різноманітні завдання. Тільки в такому випадку можна розраховувати на те, що ваш проект принесе позитивні результати і зможе повною мірою виправдати очікування, що покладаються. Серед різних питань, пов'язаних з розробкою інтернет-магазину, на особливу увагу заслуговує питання вибору CMS. Щоб вам було простіше визначитися з оптимальним для себе двигуном, в рамках

Плануючи створення власного сайту для майбутнього інтернет-магазину, досить велика кількість людей і навіть компаній, що спеціалізуються на продажах, стають перед непростим і надзвичайно важливим вибором: на якій з існуючих CMS зупинитися. Якщо ви міркуєте про те, що вибрати: PrestaShop або OkayCMS, пропонуємо ознайомитися з цією статтею, в якій ми порівняємо ці дві системи для створення інтернет-сайтів, зокрема інтернет-магазинів.

У деяких випадках з метою тестування або діагностики роботи пошти поштовому адміністратору потрібно перевірити надсилання листів через свої сервери Exchange (і не тільки) з певних хостів. Якщо сервер не вимагає авторизації (open-relay сервер), відправити пошту можна . Однак у більшості випадків поштові сервери для надсилання пошти вимагають авторизації. У цьому прикладі ми покажемо, як у консолі telnet виконати автентифікацію типу AUTH LOGIN на сервері SMTP і надіслати листа.

AUTH LOGIN– у термінології Exchange – це базова автентифікація, коли ім'я та пароль користувача передаються через мережу в закодованому за алгоритмом base64вигляді. На більшості внутрішніх серверах Exchange адміністратори не відключають BasicAuthentication. Перевірити її підтримку можна в налаштуваннях приймаючого конектора.

Примітка. Звертаємо вашу увагу, що зловмисник при доступі до каналу зв'язку може легко перехопити і розшифрувати закодовані за Base64 облікові дані користувача. Тому цей спосіб авторизації рекомендується використовувати виключно у приватних корпоративних мережах.

Для авторизації на поштовому сервері за допомогою AUTH LOGIN, нам потрібно перетворити ім'я та пароль користувача, з-під якого буде надсилатися лист у формат Base64. Це можна зробити за допомогою скриптів чи онлайн сервісів. Я скористаюся сайтом https://www.base64encode.org/.

Ім'я користувача: testuser@contoso.com, у кодуванні Base64 вийшло: dGVzdHVzZXJAY29udG9zby5jb20=

Пароль: $ up3RsTr)ng- В Base64 JHVwM1JzVHIpbmc=

Тепер у командному рядку за допомогою Telnet підключаємося на 25(SMTP) порт нашого поштового сервера (введені команди я виділятиму синім кольорів):

telnet mail.contoso.com 25

Якщо це Exchange, він поверне щось на зразок;

Представимося:

ehlo sender.contoso.com

Сервер поверне список типів авторизацій та можливостей, що підтримуються. Як ви бачите базова авторизація (AUTH LOGIN) у списку є.

250-mail.contoso.com Hello
250-SIZE 36700160
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-AUTH LOGIN
250-8BITMIME
250-BINARYMIME
250 CHUNKING

AUTH LOGIN

Сервер повинен відповісти:
334 VXNlcm5hbWU6

Тепер вставляємо ім'я користувача у форматі Base64, яке ми закодували раніше:
dGVzdHVzZXJAY29udG9zby5jb20=

Сервер повинен відповісти:

334 UGFzc3dvcmQ6.

Тепер настав час вставити пароль у форматі Base64:
JHVwM1JzVHIpbmc=

Якщо ім'я та пароль користувача вірні, сервер відповість.
235 2.7.0 Authentication successful

Якщо ні:

535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6

Тепер можна заповнити стандартні поля листа:

mail from: [email protected]
250 2.1.0 Sender OK
rcpt to: [email protected]
250 2.1.5 Recipient OK
data
354 Start mail input; end with.
from: TestUserovich
to: TheAdmin< [email protected] >
Subject: BASE SMTP Test Authenticated via Telnet
This is test
.
250 2.6.0 Queued mail for delivery

QUIT

221 2.0.0 Closing connection.
Connection closed by foreign host.

На цьому все тестове лист має успішно доставитися в ящик одержувача.

Установки надсилання пошти через SMTP

Трапляються випадки, коли сайтобудівники стикаються з проблемою роботи електронної пошти сайту на CMS Joomla. Наприклад, при надсиланні листа через форму зворотного зв'язку можуть з'являтися помилки наступного типу: "Could not instantiate mail function"або "Неможливо викликати функцію mail". Також можливий варіант надсилання листа без появи помилок, проте в результаті він все одно не доходить до адресата.

Чому ж відбуваються ці проблеми з поштою? Щоб відповісти на це запитання, необхідно в панелі керування пройти наступним шляхом: "Система" - "Загальні налаштування" - вкладка "Сервер" - розділ "Налаштування пошти".

У CMS Joomla передбачено три механізми надсилання листів: PHP Mail, Sendmail та SMTP. За замовчуванням використовується PHP Mail, з яким часто й відбуваються проблеми, які, в основному, пов'язані з налаштуваннями хостингу.

Виходячи з вищевикладеного робимо висновок: або звертаємося за допомогою до хостинг-провайдера, або використовуємо спосіб надсилання листів Sendmail або SMTP. Зупинимося на використанні SMTP.

Установки надсилання пошти за допомогою SMTP

SMTP (англ. Simple Mail Transfer Protocol) - мережевий протокол, використовуваний передачі електронної пошти. Для використання SMTP необхідно коректно виставити установки певного поштового сервера, який буде використовуватися.

Щоб побачити налаштування SMTP, необхідно в "Спосіб надсилання" вибрати "SMTP". Розглянемо кожну настройку популярних поштових серверів: Yandex, Mail, Gmail, Rambler та Yahoo.

Налаштування SMTP для Yandex

  1. E-mail сайту: поштова скринька на yandex.ru, наприклад: [email protected]
  2. Захист SMTP: SSL
  3. Порт SMTP-сервера: 465
  4. Ім'я користувача SMTP: логін скриньки на yandex.ru, наприклад: khasanov (без @yandex.ru)
  5. SMTP-сервер: smtp.yandex.ru

Установки SMTP для Mail

  1. E-mail сайту: поштова скринька на mail.ru, наприклад: [email protected]
  2. Відправник листа: запис, який відображатиметься у адресата в полі "Відправник"
  3. Вимкнути розсилку: увімк./вимк. функції масового розсилання листів
  4. Авторизація на SMTP-сервері: Так
  5. Захист SMTP: SSL
  6. Порт SMTP-сервера: 465
  7. Ім'я користувача SMTP: поштова скринька на mail.ru, наприклад: [email protected]
  8. Пароль для SMTP: пароль від поштової скриньки
  9. SMTP-сервер: smtp.mail.ru

Установки SMTP для Gmail

  1. E-mail сайту: поштова скринька на gmail.com, наприклад: [email protected]
  2. Відправник листа: запис, який відображатиметься у адресата в полі "Відправник"
  3. Вимкнути розсилку: увімк./вимк. функції масового розсилання листів
  4. Авторизація на SMTP-сервері: Так
  5. Захист SMTP: SSL
  6. Порт SMTP-сервера: 465
  7. Ім'я користувача SMTP: поштова скринька на gmail.com, наприклад: [email protected]
  8. Пароль для SMTP: пароль від поштової скриньки
  9. SMTP-сервер: smtp.gmail.com

Налаштування SMTP для Rambler

  1. E-mail сайту: поштова скринька на rambler.ru, наприклад: [email protected]
  2. Відправник листа: запис, який відображатиметься у адресата в полі "Відправник"