Функція mail php - ледачий спосіб відправки пошти
Що за функція така?
Функція потрібна і важлива, але її застосування вимагає дотримання декількох принципів. Головний з них полягає в тому, що mail () не підходить для пересилання великої кількості листів. Так як після кожної відправки функція кожен раз закриває, а потім заново відкриває з'єднання з поштовим сервером (SMTP). Це може негативно позначитися на продуктивності всього ресурсу, і привести до перевитрати серверних потужностей, виділених хостером.
Також хочу відзначити, що настройка функції mail PHP на сервері відбувається у відповідному розділі файлу конфігурації php.ini. Налаштувань всього кілька. Вони встановлюють значення заголовків за замовчуванням, задають шлях до лог-файлів, порт і т.д.
Всього функція mail () приймає 5 аргументів, хоча обов'язковими є всього 3:
Фреймворк YII2. Швидка розробка з сучасним PHP фреймворком
Дізнайся тонкощі сучасної веб-розробки за допомогою фреймворка YII2
Якщо використовуєте Денвер, то шукайте всі відправлені листи з цього шляху на віртуальному диску: Z: \ tmp \! Sendmail
Інші особливості mail ()
Застосування даної функції має безліч нюансів, список яких залежить від використовуваної платформи (ОС) і інших параметрів. Основні з них я спробую перелічити:
Відправляється email повинно містити встановлений заголовок From, який задається через 4 (необов'язковий) параметр additional_headers. Його відсутність може стати причиною того, що функція mail PHP не працюватиме.
Всі заголовки, встановлені через additional_headers, повинні бути розділені поєднанням керуючих символів нового рядка і перекладу каретки (\ r \ n).
Деякі поштові агенти, що працюють на Unix, можуть автоматично замінювати \ n на \ r \ n. В результаті заголовки поділяються двома символами переведення рядка і одним перекладом каретки, що може привести до висновку помилки. Якщо email не відсилати, спробуйте розділити все хедери одним символом \ n. Але пам'ятайте, що такий синтаксис є порушенням існуючих стандартів.
Довжина кожного рядка не повинна бути більше 70 символів. Рядки між собою розділяються поєднанням керуючих символів \ r \ n.
Якщо функція «Не фуричіт»
Найпростіше налаштувати відправку листів на локальному сервері. Після тестування в Денвері перевірений скрипт може не працювати на «справжньому» сервері. Однією з причин того, чому не працює функція mail PHP на вашому хостингу, може бути відсутність зазначеного поштової скриньки відправника. В такому випадку краще перевірити коректність заданого «мила», заданого в панелі управління хостингом.
Крім цього функція mail () може не працювати, якщо в php.ini вона занесена в розділ заборонених «до вживання» (disable_functions). Щоб не нишпорити як очманілий за змістом цього (досить об'ємного) файлу, краще використовувати функцію phpinfo (), яка виводить всі параметри мови в спеціальній таблиці.
Для перевірки функції mail в PHP має сенс використовувати простенький оцінний код. Його слід розмістити в новому файлі в кореневій директорії сайту на серверному просторі:
Якщо в результаті отримаєте 1 на екрані, то все нормально і лист надіслано. Звідки одиниця? Її повертає після виконання функція mail ().
Ну, з функцією mail () розібралися. А якщо вам і з її допомогою важко (лінь) відправляти листи, то розробіть свій інноваційний метод. Може бути, його опису я присвячу свій черговий матеріал.
Найсвіжіші новини IT і веб-розробки на нашому Telegram-каналі
Вітаю! Підкажіть будь ласка, як призначити свою фотографію для контакту при відправці пошти за допомогою функції mail ()?
Наприклад, скрипт відправляє з сайту лист моєму новому передплатнику в автоматичному режимі після реєстрації. Йому приходить лист, скажімо на яндекс пошту, і у нього відображається замість фотографії (в кружечку) перша буква домену сайту. Ось цю саму фотографію як змінити?
Сервіси email-розсилок не використовую, всі листи відправляю з сайту функцією mail ()
Наперед дякую.
Фреймворк YII2: теорія і перша практика
Куди вам відправити уроки?
ВКонтакте на Email