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— ключ с почтовым ящиком отправителя (не разделяются пробелом). Будет вызывать ошибку, если в настройках сайта выбран почтовый ящик.
Параметры функции нужно указывать в двойных " или одинарных ' кавычках.