2.8.18. Функція PHP mail
Увага!
При неправильному використанні функції можуть виникати проблеми з доставкою — надіслані листи можуть потрапляти в спам або відхилятися поштовим сервером одержувача. Щоб уникнути цього, див. Правильне надсилання пошти з сайту.
Функція PHP mail дозволяє надсилати листи з веб-сервера без авторизації в існуючій поштовій скриньці. Вона корисна для швидкого налаштування надсилання листів, але при цьому без певних налаштувань надіслані листи з великою ймовірністю можуть потрапляти в спам або бути відхилені. Часто це пов'язано із зазначенням некоректного заголовка FROM або його відсутністю, а також неможливістю використання DKIM.
При вказанні заголовка FROM важливо враховувати, яка саме поштова скринька буде використовуватися. Рекомендується:
- Або не вказувати її в самій функції, а вибирати в налаштуваннях сайту.
- Або не вибирати її в налаштуваннях сайту, а вказувати в функції як додатковий заголовок.
Наприклад, якщо при надсиланні листа в заголовку вказати поштову скриньку з доменом google.com, лист буде відхилено через налаштування SPF-запису домену google.com. Тому в якості відправника слід вказувати тільки ваш домен або існуючу поштову скриньку.
Синтаксис
Функція PHP mail має певні параметри для вказання даних одержувача, відправника, листа тощо:
mail("одержувач", "тема листа", "тіло листа", "додаткові заголовки", "додаткові параметри");
Параметри
Основні параметри:
одержувач— має відповідати RFC 2822, не може містити сумарно більше 60 одержувачів у заголовках “To”, “Cc”, “Bcc”:admin@example.com— один одержувач.admin@example.com, user@example.com— кілька одержувачів.Ім'я <admin@example.com>— ім'я та адреса одержувача, можна вказувати декількох одержувачів через кому.
тема листа— має відповідати RFC 2047.тіло листа— вміст листа:- Має складатися з рядків довжиною не більше 70 символів. Для розділення тексту по рядках можна використовувати функцію PHP wordwrap:
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(кожен одержувач думатиме, що лист був адресований саме йому).Bcc— працює аналогічно, але без зміни заголовкаTo. ⚠️ Сумарно в заголовкахTo,Cc,Bccмає бути не більше 60 одержувачів.
додаткові параметри(необов'язковий) — параметри та ключі для використанняsendmail:-Fname— ключ з ім'ям відправника (не розділяються пробілом).-fmail@example.com— ключ із поштовою скринькою відправника (не розділяються пробілом). Буде викликати помилку, якщо в налаштуваннях сайту вибрана поштова скринька.
Параметри функції потрібно вказувати в подвійних " або одинарних ' лапках.