mail

(PHP 4, PHP 5, PHP 7, PHP 8)

mail — Надсилає електронну пошту

Опис

mail(    string $to,    string $subject,    string $message,    array|string $additional_headers = [],    string $additional_params = ""): bool

Надсилає електронну пошту.

Список параметрів

to

Одержувач або одержувачі листа.

Формат строки по правилам стандарта» RFC 2822. Приклади:

subject

Тема листа, що надсилається.

Застереження

Тема должна удовлетворять правилам стандарта» RFC 2047

message

Надіслане повідомлення.

Кожен рядок має бути відокремлений комбінацією символом CRLF (\r\n). Рядки не повинні бути довшими за 70 символів.

Застереження

(Тільки для Windows) Якщо при прямому зверненні PHP до SMTP-сервера на початку рядка виявлена ​​точка, що позначає кінець пропозиції, вона видаляється. Щоб протидіяти цьому, ці входження замінюють подвійною точкою.

Loading...

additional_headers (Необов'язковий)

Рядок або масив, які будуть вставлені в кінець заголовка листа.

Найчастіше користуються, щоб додати додаткові заголовки (From, Cc, і Bcc). Додаткові заголовки поділяють комбінацією символів CRLF (\r\n). Якщо у складанні заголовка беруть участь зовнішні дані, їх очищають, щоб унеможливити впровадження небажаних заголовків.

Якщо передано масив, його ключі будуть іменами заголовка, а значення значеннями.

Зауваження :

Отправляемое письмоповинно містити заголовок FromЕго устанавливают через параметрadditional_headersили задают значение по умолчанию в файле php.ini.

Якщо заголовок відсутній, буде видано повідомлення про помилку на кшталт Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missingЗаголовокFrom також визначає заголовок Return-Path під час прямого надсилання через SMTP-сервер (лише Windows).

Зауваження :

Якщо повідомлення не надсилаються, намагаються вказати лише символ LF (\n). Деякі агенти пересилання повідомлень Unix (особливо » qmail) автоматично замінюють символ перекладу рядка LF на комбінацію символів CRLF (що подвоює символ повернення каретки CR, якщо було зазначено CRLF). Цей захід обирають у крайньому випадку, оскільки він не відповідає стандарту » RFC 2822

additional_params (Необов'язковий)

Параметрadditional_params задають, щоб передати додаткові прапори як аргументів командного рядка для програми, налаштованої директиві sendmail_path для надсилання листів. Наприклад, цим користуються при надсиланні листа агентом sendmail з аргументом -f, щоб встановити адресу відправника конверта.

Параметр автоматично екранується функцією escapeshellcmd(), щоб запобігти виконанню команди. Функція escapeshellcmd() виключає виконання команди, але дозволяє додаткові параметри. З міркувань безпеки рекомендовано очищати цей параметр, щоб не допустити додавання небажаних параметрів до команди командної оболонки.

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

Користувач, від імені якого запущено веб-сервер, повинен бути доданий в конфігурацію агента sendmail як довіреного користувача, щоб запобігти додаванню заголовка X-Warning в повідомлення, коли відправник конверта встановлено через аргумент (-f). Для користувачів агента sendmail це файл /etc/mail/trusted-users.

Значення, що повертаються

Повертає **true**якщо лист був прийнятий для передачі, інакше false

Те, що лист було прийнято передачі, значить, що він досягне одержувача.

список змін

ВерсияОпис
7.2.0Параметрadditional_headers тепер приймає масив.

Приклади

Приклад #1 Надсилання листа.

Виклик функції mail() для надсилання простого листа:

Loading...

Приклад #2 Надсилання листа з додатковими заголовками.

Додавання простих заголовків, які повідомляють поштовому агенту адреси From та Reply-To:

Loading...

Приклад #3 Надсилання листа з додатковими заголовками, переданими масивом

У цьому прикладі надсилається той же лист, що і в прикладі вище, але додаткові заголовки задаються масивом (доступно з PHP 7.2.0).

Loading...

Приклад #4 Надсилання листа з додатковими аргументами командного рядка.

Параметрadditional_params вказують, щоб передати додатковий аргумент програмі, налаштованій у директиві sendmail_pathдля отправки писем.

Loading...

Приклад #5 Надсилання HTML-повідомлення

функцією mail() можна також надіслати електронний лист у форматі HTML.

Loading...

Зауваження :

Для надсилання HTML-повідомлень або інших складних електронних листів рекомендовано встановлення PEAR-пакету » PEAR::Mail_Mime

Примітки

Зауваження :

Реалізація SMTP (лише Windows) функції mail() Windows багато в чому відрізняється від реалізації в агенті sendmail. По-перше, вона не використовує локальну програму для складання листів, а працює безпосередньо з сокетами, що означає, що необхідний поштовий агент (MTA), що очікує з'єднань на сокеті (який може бути як на локальній, чи localhost, так і на віддаленій машині).

По-друге, додаткові заголовки на кшталт: From: Cc: Bcc:иDate: інтерпретуються насамперед не поштовим агентом MTA, а PHP.

Тому параметр to не має бути адресою виду "Something someone@example.comКоманда mail може неправильно інтерпретувати цю адресу під час передачі даних поштовим агентом MTA.

Зауваження :

Функцияmail() не рекомендована для надсилання великої кількості листів у циклі. Функція відкриває та закриває SMTP-сокет для кожного листа, що не дуже ефективно.

Для надсилання великої кількості повідомлень зверніть увагу на пакети » PEAR::Mail і » PEAR::Mail_Queue

Зауваження :

Корисні RFC: » RFC 1896 » RFC 2045 » RFC 2046 » RFC 2047 » RFC 2048 » RFC 2049 і » RFC 2822

Дивіться також