Надсилання листів через smtp з авторизацією php. Надсилання пошти через SMTP на PHP. Надсилання пошти php через SMTP-налаштування скрипту

Mail PHP

Саме ця функція реалізована за замовчуванням як відправка Email. Цей функціонал не вимагає стороннього сервера для пересилання електронної пошти. Для того щоб перевірити коректність цієї функції, достатньо створити в папці з сайтом файл test.php і розмістити туди наступний код:

Де замість "EMAILОТРИМАЧА" введіть Email, на який має надіслати лист.

Помістіть даний файлу корені вашого сайту.

Далі в адресному рядку введіть www.ВашДомен/test.php. Якщо на вказану пошту надійшов лист, то Ваш хостинг коректно працює з функцією надсилання листів " Mail PHP" . Не виключено, що лист потрапив у спам, тому його теж необхідно перевірити.

Якщо лист надійшов у незрозумілому кодуванні, поміняйте рядок: "Перевірка надсилання пошти"на "Перевірка надсилання пошти", "Content-type:text/html;charset=utf-8".

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

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

З недоліків даного методуварто відзначити не постійність роботи даного способу. Можуть виникати перебої у надсиланні листів на боці хостингу.

Головний недолік цього методу полягає в тому, що всі листи, що прийшли на email клієнтів, не будуть розпізнаватись поштовими сервісами (gmail, mail.ru, yandex.ru) такими, що були відправлені безпосередньо з Вашого сайту.

Поштовий сервіс Gmail відображає дані листа зі знаком питання та підписом: "Системі Gmail не вдалося підтвердити, що цей лист відправлений з домену ВашДомен Можливо, це спам".

Щоб уникнути цієї ситуації .

SMTP (Simple Mail Transfer Protocol)

SMTP – протокол передачі пошти. Загалом для налаштування передачі пошти за допомогою цього протоколу необхідний сам сервер SMTP. Найбільш поширений варіант використання корпоративної (доменної) пошти yandex.ru як SMTP сервер https://pdd.yandex.ru/.

Насамперед необхідний обліковий запис (пошта) yandex, на основі якої будуть створені пошти для Вашого домену: "order@ВашДомен" "info@ВашДомен"… Основний обліковий запис ніде не буде видно і використовується тільки для того, щоб надалі на його основі створювати доменні пошти.

Після авторизації у своєму особистому обліковому записі yandex створюється доменна пошта за посиланням https://pdd.yandex.ru/. Саме цю доменну пошту бачитимуть користувачі у полі “Відправник”

Поле "Відправник" є обов'язковим при надсиланні листів за допомогою SMTP. Використовуючи SMTP як надсилання листів, реалізується зв'язка " Домен" - "Email", цим листи розпізнаються поштовими сервісами.


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

2019-08-05

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Так як у попередній статті ми зупинилися на перевірці підключення доменної пошти до сервісу Яндекс.Пошта, то й надсилатимемо пошту для цього варіанту. Хоча це не є принциповим. Нижче будуть відмічені ті опції, при зміні яких можна буде відправляти email через поштовий сервер 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

Надсилання пошти через 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 всі дані будуть приблизно однакові.

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

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

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

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

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

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

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

Як надсилати листи за допомогою PHP?

За допомогою будь-якого класу PHP, що підтримує авторизацію на smtp-сервері. Наприклад, можна використовувати набір класів PHPMailer.

Також ви можете скористатися нашим прикладом, в якому реалізовано надсилання листів з використанням smtp-сервера, для якого потрібна авторизація. Тому не забудьте додати до скрипта відповідні реквізити доступу, наприклад:

// Якщо потрібно показати лог SMTP-сесії, можна розкоментувати наступний рядок. // $_SERVER["debug"] = true; function MailSmtp ($reciever, $subject, $content, $headers, $debug = 0) ($smtp_server = "smtp.сайт"; // адреса SMTP-сервера$ smtp_port = 25; // порт SMTP-сервера$smtp_user = " [email protected]" ; // Ім'я користувача для авторизації на SMTP-сервері$smtp_password = "pAsSwORd"; // Пароль для авторизації на SMTP-сервері$mail_from = " [email protected]" ; // Ящик, з якого надсилається лист$sock = fsockopen ($smtp_server, $smtp_port, $errno, $errstr, 30); $ str = fgets ($ sock, 512);<" . $mail_from . ">if (! $sock ) ( printf ("Socket is not created\n" ); exit(1 ); ) smtp_msg ($sock , "HELO " . $_SERVER [ "SERVER_NAME" ]); smtp_msg ($sock, "AUTH LOGIN"); smtp_msg ($sock, base64_encode ($smtp_user)); smtp_msg ($ sock, base64_encode ($ smtp_password)); smtp_msg ($sock , "MAIL FROM:<" . $reciever . ">" ); smtp_msg ($sock , "RCPT TO:
" ); smtp_msg ($sock , "DATA" ); $headers = "Subject: " . $subject . "\r\n" . $headers ; $data = $headers . $content ; smtp_msg ! $sock ) ( printf ("Broken socket!\n" ); exit(1 ); ) if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) ( printf ("Send from us : %s
" , nl2br (htmlspecialchars ($msg )))) ) fputs ($sock , " $msg \r\n" ); $str = fgets ($sock , 512 ); if (! $sock ) ( printf ("Socket is down\n" ); exit(1 ); ) else ( if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) ( printf ("Got from server: %s " , nl2br (htmlspecialchars ($str ))); ) $e = explode (" " , $str ); $code = array_shift ($e ); $str = implode (" " , $e ); if ($code > 499) (printf (

"Problems with SMTP conversation.
Code %d.
"
Message %s

, $code , $str);

exit(1);

) ) ) ?>Завантажити приклад готового скрипту з функцією MailSmtp(): smtpauth.php.sample Використовувати описану вище функцію MailSmtp() можна для прямої заміни функції mail(), розглянемо приклад найпростішої форми на PHP:// Заголовки повідомлення, у яких визначається кодування повідомлення, поля From, To тощо. "From: Ім'я відправника " ; // mail ($to, $subject, $message, $headers); require_once "smtpauth.php"; MailSmtp ($to, $subject, $message, $headers); ) ?>
Кому: Тема: Текст: 
 
 

Щоб ця форма запрацювала без функції mail(), ми включили файл smtpauth.php через require_once і викликали функцію MailSmtp(), описану в ньому, з аналогічними для mail() аргументами. При цьому сам виклик mail() ми закоментували у коді, щоб уникнути помилки під час виконання скрипту.

Як надсилати листи за допомогою ASP.NET?

Якщо ви використовуєте версію 2.0, використовуючи клас MailMessage System.Net.Mail), добре описаний.

Нижче наведено приклади його використання для мов C# і VisualBasic:

Приклад мови «C#»:

<% @Page Language="c#" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% MailMessage message = new MailMessage(); // Створення нового листа message.To.Add (" [email protected]"); // додавання адреси одержувача message.From = новий MailAddress("from@ domain.tld", "Ім'я відправника"); // Вказівка ​​імені та адреси відправника message.Subject = "Тема листа"; // Вказівка ​​теми листа message.BodyEncoding = System.Text.Encoding.UTF8; // Вказівка ​​кодування листа message.IsBodyHtml = false; // Вказівка ​​формату листа (true - HTML, false - не HTML) message.Body = "Текст листа"; // Вказівка ​​тексту (тіла) листа SmtpClient client = new SmtpClient("smtp.сайт",25); // Створення нового підключення до сервера "smtp.сайт" client.DeliveryMethod = SmtpDeliveryMethod.Network; // визначає метод надсилання повідомлень client.EnableSsl = false; // відключає необхідність використання захищеного з'єднання із сервером client.UseDefaultCredentials = false; // відключення використання реквізитів авторизації "за замовчуванням" client.Credentials = новий NetworkCredential("postmaster@ domain.tld"***password***"); // Вказівка ​​потрібних реквізитів (імені користувача та пароля) для авторизації на SMTP-сервері client.Send(message); // відправка повідомлення %>

Завантажити приклад готової форми, що демонструє використання цього методу: MailForm.aspx.

Приклад мови «VisualBasic»:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% Dim smtpMssg AS new MailMessage smtpMssg.From = New MailAddress ("admin@domain.tld", "Ім'я_відправника") smtpMssg.To.Add (" [email protected]") додавання адреси одержувача smtpMssg.Subject = "Тема листа" вказівка ​​теми листа smtpMssg.Body = "Текст листа" вказівка ​​тексту (тіла) листа smtpMssg.BodyEncoding = System.Text.Encoding.UTF8 вказівка ​​кодування листа smtpMssg.IsBodyHtml = false вказівка ​​формату листа (true - HTML, false - не HTML) Dim SmtpMail As New SmtpClient("smtp.сайт", 25) оголошення нового об'єкта типу "SmtpClient" SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network вказівка ​​методу доставки листа SmtpMail.UseDefaultCredentials = False " відключення використання реквізитів авторизації " за замовчуванням " SmtpMail.EnableSsl = False відключає необхідність використання захищеного з'єднання з сервером SmtpMail.Credentials = новий NetworkCredential("postmaster@ domain.tld", "***password***") вказівка ​​потрібних реквізитів (імені користувача та пароля) для авторизації на SMTP-сервері SmtpMail.Send(smtpMssg) " відправка повідомлення %>

Також існує застарілий (і не рекомендується до використання) клас SmtpMail (використовується простір імен System.Web.Mail). Нижче наведено приклад його використання для мови VisualBasic:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Web" %> <% @Import Namespace="System.Web.Mail" %> <% Dim smtpMssg = new MailMessage " оголошення нового об'єкта типу "MailMessage" smtpMssg.From = "Ім'я_відправника domain.tld>" вказівка ​​імені та адреси відправника smtpMssg.To = "admin@ domain.tld" вказівка ​​адреси одержувача smtpMssg.BodyFormat = MailFormat.Text вказівка ​​формату листа smtpMssg.BodyEncoding = Encoding.UTF8 "вказівка ​​кодування листа smtpMssg.Subject = "Тема листа" вказівка ​​теми листа smtpMssg.Body = "Текст листа" вказівка ​​тексту листа smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",1) вказівка ​​необхідності SMTP-авторизації на сервері smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "admin@ domain.tld") ім'я користувача для авторизації smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "***password***") пароль для авторизації SmtpMail.SmtpServer = "smtp.сайт" вказівка ​​адреси SMTP-сервера SmtpMail.Send(smtpMssg) " відправка повідомлення %>

Як надсилати листи за допомогою ASP?

Зверніть увагу, що при використанні нашого smtp-сервера потрібна авторизація, тому не забудьте додати до скрипта відповідні реквізити доступу, наприклад:

<% iConfig = Server.CreateObject("CDO.Configuration") Set iConfig = Server.CreateObject("CDO.Configuration") With iConfig.Fields .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.сайт" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/languagecode") = "ru" .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "postmaster@domain.tld.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password" .Update End With Set cdoMessage = CreateObject("CDO.Message") With cdoMessage Set .Configuration = iConfig .From = "Test user domain.tld>" .To = "User " .Subject = "Hello, User" .TextBody = "I write this message from ASP script." .Send End With Set cdoMessage = Nothing Set iConfig = Nothing %>

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

Wordpress

Для цієї CMS існує спеціальний модуль WP Mail SMTP, приклад його конфігурації описаний на сторінці модуля .

Зверніть увагу на ілюстрацію в прикладі, в умовах нашої поштової системи потрібно використовувати 25 порт і SSL-шифрування не потрібно.

Joomla

У панелі адміністрування перейдіть до розділу «Загальні налаштування», виберіть вкладку «Сервер». У полі «Пошта» потрібно вибрати спосіб відправлення як «SMTP-сервер», у полях «Адреса SMTP-сервера» та «SMTP-логін» та «SMTP-пароль» вкажіть відповідні реквізити поштової системи, наприклад: smtp.сайт, скринька@ваш_домента відповідний пароль.

Drupal

Ця CMS також має власний модуль для роботи з SMTP-сервером, заснований на базі PHPmailer.Завантажити цей модуль можна на його сторінці на сайті CMS Drupal, опис встановлення модуля доступний в архіві з ним.

NetCat

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

  • Завантажити з нашого сайту архів з необхідними файлами ( send_auth_mail.phpі mail.inc.php) та розпакувати його на комп'ютері;
  • Відредагувати файл send_auth_mail.phpз архіву, вказавши в ньому реквізити підключення до потрібного SMTP-сервера:

    • $mail_smtpServer = "smtp.сайт"; (адреса SMTP-сервера)
    • $mail_port = "25" ; (порт для підключення)
    • $mail_username = "[email protected]" ; (ім'я користувача для авторизації на SMTP-сервері)
    • $mail_password = "Password"; (пароль для авторизації на SMTP-сервері)
  • Створити резервну копію файлу domain.tld/www/netcat/admin/mail.inc.php;
  • Завантажити файли send_auth_mail.phpі mail.inc.phpна віртуальний майданчик у директорію domain.tld/www/netcat/admin/

domain.tldслід замінити на ім'я вашого домену.

Пропоноване рішення працює з усіма модулями NetCat, які використовують стандартні функції цієї CMS для надсилання пошти.




Top