2.8.18. Функція PHP mail

Увага!

Ця функція за неправильних налаштувань і використання може некоректно доставляти листи на цільову поштову скриньку — надіслані листи можуть потрапляти в спам або відхилятися поштовим сервером одержувача. Рекомендується використовувати коректні налаштування або відправляти листи по SMTP.

Функція mail дозволяє здійснювати відправку листів без SMTP-авторизації в поштовій скриньці. Вона корисна для швидкого налаштування відправки листів, але при цьому без певних налаштувань може відправляти листи, які з високими шансами будуть поміщені в спам або відхилені. Причина тому — відсутність коректного або вказання неправильного заголовка FROM при відправці, а також неможливість використання DKIM.

Вказуючи заголовок FROM, важливо враховувати, яка саме поштова скринька буде використовуватися. Рекомендується:

Наприклад, при надсиланні листів із вказанням заголовка, в якому буде використовуватися домен google.com, лист буде відхилено через наявність SPF-запису у домена google.com, тому в якості відправника слід вказувати тільки ваш домен або існуючу поштову скриньку.

Функція mail має певні параметри для вказання даних одержувача, відправника, листа та іншого. Приклад використання функції:

mail("Одержувач", "Тема листа", "Тіло листа", "Додаткові заголовки", "Додаткові параметри");

Всі зазначені параметри функції потрібно вказувати в подвійних " або одинарних ' лапках. Приклад використання функції надано в тестовому скрипті. Параметри повинні відповідати:

  • Одержувач — параметр повинен відповідати стандарту, не може містити більше 60 одержувачів, з урахуванням зазначених в заголовку to, Cc, Bcc, і може бути вказаний як:
    • admin@example.com — один одержувач.
    • admin@example.com, user@example.com — кілька одержувачів, розділених комами.
    • Ім'я — ім’я одержувача і поштової скриньки. Додатково можна вказати також кілька одержувачів, розділених комами.
  • Тема листа — тема, яка буде вказана в листі, повинна відповідати стандарту.
  • Тіло листа — текст, який буде вказано в самому листі. Для вказання коректного тіла потрібно враховувати:
    • Тіло листа має бути розділене на рядки, якщо воно перевищує 70 символів. Рядок не може бути більше 70 символів. Поділ тексту по рядках зручно реалізовувати функцією wordwrap. Наприклад, якщо в змінної $message міститься текст листа, то можна її використовувати так:
      wordwrap($message, 70, "\r\n")
    • Поділ рядків має проводиться за допомогою CRLF (\r\n).
  • Додаткові заголовки (необов’язковий параметр) — рядок з розділеними за допомогою CRLF (\r\n) заголовками або масив рядків з певними заголовками. Часто вказуються заголовки:
    • From — заголовок, в якому вказується відправник листа. Створюватиме помилку при використанні певної поштової скриньки в налаштуваннях сайту.
    • Reply-To — адреса, на яку будуть адресовані відповіді на лист. Рекомендується використовувати даний заголовок замість From.
    • Content-Type — MIME-заголовок, який повідомляє поштовій програмі про тип даних, що зберігаються в повідомленні. В даному заголовку можна задати використовувану кодування:
      'Content-type: text/html; charset="utf-8"'
    • Cc та Bcc — відправка копії повідомлення. Cc — копіює повідомлення адресату, працюючи за аналогією заголовка To (одержувач), але безліч поштових сервісів може використовувати його для відокремлення кожного одержувача, щоб не відображати їм список, кому було адресовано лист. Даний заголовок для кожного одержувача підставляє самого одержувача в заголовок To, тим самим кожен одержувач буде думати, що лист було адресовано саме йому. Bcc — копіює повідомлення адресату і виконує ту ж функцію, що і Cc за винятком того, що заголовок To (одержувач) не змінений і користувачеві, якому адресовано лист, не буде відображено його поштову скриньку в списку одержувачів листа. Даний заголовок небезпечний в застосуванні і може призводити до проблем доставки або розуміння причин доставки листа вказаному в ньому одержувачу. Важливо! Не можна вказувати більш 60 одержувачів з урахуванням зазначених в заголовку To, Cc, Bcc.
  • Додаткові параметри (необов’язковий параметр) — параметри і ключі для використання sendmail. Часто використовувані ключі:
    • -Fuser — ключ з ім’ям відправника (не розділяються пробілом).
    • -fuser@example.com — ключ з поштовою скринькою відправника (не розділяються пробілом). Параметр буде створювати помилку при використанні певної поштової скриньки в налаштуваннях сайту.
Зміст