Функция mail() встроена в PHP и используется для отправки электронных писем непосредственно с веб-сервера. Это простой способ отправки уведомлений, сообщений контактных форм, подтверждений заказов и других типов сообщений.
Подходит для базовой функциональности электронной почты без использования внешних библиотек.
Когда вы вызываете функцию mail(), PHP передает письмо системному агенту передачи почты (MTA), установленному на сервере (обычно Sendmail или Postfix). Затем MTA обрабатывает и доставляет сообщение по указанному адресу.
mail(to, subject, message, headers, parameters);
Параметр | Описание |
---|---|
$to | Адрес электронной почты получателя. Можно указать несколько адресов, разделенных запятыми. |
$subject | Тема письма. Не должна содержать разрывов строк. |
$message | Основная часть сообщения. |
$headers | Дополнительные заголовки, такие как From, Reply-To, Cc, Bcc и т. д. |
$parameters | Дополнительные параметры, например, указание отправителя для Sendmail (-f). |
<?php
$to = "user@example.com";
$subject = "Test Email";
$message = "Hello! This is a test email sent using PHP.";
$headers = "From: webmaster@yourdomain.com";
mail($to, $subject, $message, $headers);
?>
Если вы не укажете заголовок From:, большинство почтовых серверов отклонят сообщение как подозрительное или спам.
$headers = "From: noreply@yourdomain.com";
Используйте \r\n для разделения строк в сообщении:
$message = "Здравствуйте,\r\n\r\nСпасибо за ваш заказ.\r\n\r\nЛучшие пожелания,\r\nВаша команда";
Используйте \r\n для разделения нескольких заголовков, таких как Reply-To, Cc и Bcc:
$headers = "From: admin@yourdomain.com\r\n";
$headers .= "Reply-To: support@yourdomain.com\r\n";
$headers .= "Cc: someone@yourdomain.com\r\n";
Функция mail() не поддерживает вложения. Но вы можете отправлять HTML-письма или задавать тип содержимого вручную:
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";
$headers .= "From: info@yourdomain.com";
$message = "<h1>Hello!</h1><p>Your order has been received.</p>";
mail("user@example.com", "Order Confirmation", $message, $headers);
Проблема | Причина / решение |
---|---|
Электронное письмо не доставлено | Отсутствует заголовок From: или IP-адрес сервера находится в черном списке |
Письмо вообще не отправляется | Не установлен MTA (например, требуется Sendmail/Postfix) |
Ошибка: функция mail() отключена | mail() отключен в php.ini (часто это связано с политикой хоста) |
Русский текст отображается как ???? | В заголовках не установлен параметр UTF-8 |
Письма попадают в спам | Неправильный From, отсутствие SPF/DKIM или неправильно настроенный домен |
Функция mail() – это базовый, но мощный инструмент для отправки электронных писем непосредственно из PHP-скриптов. Это:
Однако не забывайте о его ограничениях:
Если вы планируете регулярно отправлять электронные письма, убедитесь, что ваш сервер правильно настроен для работы с исходящей почтой (установлен Sendmail/Postfix, настроены записи SPF/DKIM и включена функция mail() в php.ini).