Рис.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.
![](https://i0.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_7.png)
Пошта буде приходити на будь-яку адресу, яка буде вказана у скрипті замість значення ‘to’
, але обробляти та надсилати цю пошту буде саме той SMTP, який буде вказаний у налаштуваннях openserver.
- Запускаємо сервер
- Відкриваємо модуль openserver із налаштуваннями в меню «пошта»
- Заповнюємо всі поля як показано на картинці, при цьому ім'я користувача, e-mail відправника та пароль підставляємо від реальної поштової скриньки на яндексі.
![](https://i2.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_1.png)
Зберігаємо налаштування та після того, як сервер буде перезапущено, можна звернутися до самого скрипту. З папки "Мої сайти", відкрити папку "send" в якій і знаходиться збережений раніше скрипт index.php.
![](https://i2.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_4.png)
Як тільки звернеться до цього скрипта, у новому вікні браузера з'явиться інформація про те, що скрипт відпрацював.
![](https://i0.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_5.png)
Після цього варто перевірити свою поштову скриньку, адресу якої було вказано у скрипті, чи надійшов лист.
![](https://i1.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_6.png)
Якщо його немає, значить щось налаштовано неправильно, або лист потрапив до папки спам.
Всі інші налаштування виглядають аналогічно, але про всяк випадок додаткова інформація не завадить.
Для того, щоб налаштувати надсилання пошти через SMTP mail ru, необхідно просто замінити параметри яндекса на параметри mail ru.
А щоб не перебудовувати щоразу локальні сервери, найкраще налаштувати різні профілі openserver. Як це зробити показано у відеоуроці.
У цьому випадку достатньо буде просто завантажити профіль і всі налаштування, які були вказані для цього профілю, будуть доступні після перезапуску сервера. Дуже зручна річ і працює дуже просто.
Для кожного профілю (зовсім не важливо як він буде називатися), повинні бути зроблені свої налаштування, якщо, звичайно, планується використання різних за своїми параметрами скриптів, cms-систем і додатків.
Якщо ні, можна обійтися і налаштуваннями за замовчуванням.
Що ж до SMTP mail ru, то тут все едентично.
Змінюються дані яндексу на дані mail ru
![](https://i1.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_2.png)
Надсилання пошти через smtp google
Для того, щоб налаштувати надсилання пошти через SMTP гугла, варто трохи постаратися.
По-перше, створення самого профілю в гугле складніше, ніж в інших системах яндексу та mail ru
По-друге, система просто так не пропустить листа, навіть якщо вказати свої дані для входу. Для початку вона надішле лист у якому і буде вся необхідна інформація про подальші інструкції.
В іншому ж для гугла налаштовується так само. Змінюються лише всі дані.
![](https://i1.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_3.png)
Для налаштування надсилання пошти через інші 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-сервером. Для надсилання пошти скриптами сайту ми можемо запропонувати використовувати наше рішення, для його підключення необхідно виконати такі дії:
domain.tldслід замінити на ім'я вашого домену.
Пропоноване рішення працює з усіма модулями NetCat, які використовують стандартні функції цієї CMS для надсилання пошти.