Функція mail PHP – головний листоноша інтернету

343

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

Що за така функція?

Функція потрібна і важлива, але її застосування вимагає дотримання декількох принципів. Головний з них полягає в тому, що mail() не підходить для пересилання великої кількості листів. Так як після кожної відправки функція кожен раз закриває, а потім заново відкриває з’єднання з поштовим сервером SMTP. Це може негативно позначитися на продуктивності всього ресурсу, і призвести до перевитрати серверних потужностей, виділених хостером.

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

Всього функція mail() приймає 5 аргументів, хоча обов’язковими є всього 3:

«Мило».

Title листи.

Текст.

Наприклад:

Функція mail PHP – головний листоноша інтернету

Якщо використовуєте Денвер, то шукайте всі надіслані листи з цього шляху на віртуальному диску: Z:\tmp\!sendmail

Інші особливості mail()

Застосування даної функції має безліч нюансів, список яких залежить від використовуваної платформи (ОС) та інших параметрів. Основні з них я спробую перерахувати:

Повідомлення, email повинен містити встановлений заголовок From, який задається через 4 (необов’язковий параметр additional_headers. Його відсутність може стати причиною того, що функція mail PHP не буде працювати.

Всі заголовки, встановлені через additional_headers, повинні бути розділені поєднанням керуючих символів нового рядка і переведення каретки(\r\n).

Деякі поштові агенти, що працюють на Unix, можуть автоматично замінювати \n \r\n. В результаті заголовки поділяються двома символами переведення рядка і одним перекладом каретки, що може привести до висновку помилки. Якщо email не відсилається, спробуйте розділити всі хедеры одним символом \n. Але пам’ятайте, що такий синтаксис є порушенням існуючих стандартів.

Функція mail PHP – головний листоноша інтернету

Довжина кожного рядка не повинна бути більше 70 символів. Рядки між собою розділяються поєднанням керуючих символів \r\n.

Якщо функція «не фуричить»

Найпростіше налаштувати відправку листів на локальному сервері. Після тестування в Денвері перевірений скрипт може не працювати на «справжньому» сервері. Однією з причин того, чому не працює функція mail PHP на вашому хостингу, може бути відсутність зазначеного поштової скриньки відправника. В такому випадку краще перевірити коректність заданого «мила», заданого в панелі управління хостингом.

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

Крім цього функція mail() може не працювати, якщо в php.ini вона занесена в розділ заборонених «до вживання» (disable_functions). Щоб не нишпорити як очманілі по змісту цього (досить об’ємного) файлу, краще використовувати функцію phpinfo(), яка виводить всі параметри мови в спеціальній таблиці.

Функція mail PHP – головний листоноша інтернету

Для перевірки функції mail в PHP має сенс використовувати простенький текстовий код. Його слід розмістити в новому файлі в кореневій директорії сайту на серверному просторі:

Якщо в результаті отримайте 1 на екрані, то все нормально і лист надіслано. Звідки одиниця? Її повертає після виконання функція mail().

Функція mail PHP – головний листоноша інтернету

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