Функція mail() вбудована в PHP і використовується для надсилання електронних листів безпосередньо з веб-сервера. Це простий спосіб надсилати сповіщення, повідомлення контактних форм, підтвердження замовлень та інші типи повідомлень.
Підходить для базового функціоналу електронної пошти без використання зовнішніх бібліотек.
Коли ви викликаєте функцію mail(), PHP передає електронний лист системному агенту передачі пошти (MTA), встановленому на сервері (зазвичай Sendmail або Postfix). Потім MTA обробляє і доставляє повідомлення на вказану адресу.
mail(кому, тема, повідомлення, заголовки, параметри);
Параметр | Опис |
---|---|
$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 = "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);
Поширені проблеми та шляхи їх вирішення
Проблема | Причина / Рішення |
---|---|
Імейл не доставлено | Відсутній: заголовок або IP-адреса сервера в чорному списку |
Імейл не надсилається взагалі | Не встановлено MTA (наприклад, потрібен Sendmail/Postfix) |
Помилка: функцію mail() відключено | mail() відключено в php.ini (часто через політику хоста) |
Український текст відображається як ???? | У заголовках не встановлено кодування UTF-8 |
Листи потрапляють до спаму | Неправильно вказано From, відсутній SPF/DKIM або неправильно налаштований домен |
Функція mail() є базовим, але потужним інструментом для надсилання електронних листів безпосередньо з PHP-скриптів. Так і є:
Однак пам’ятайте про його обмеження:
Якщо ви плануєте регулярно надсилати листи, переконайтеся, що ваш сервер належним чином налаштований для вихідної пошти (з встановленим Sendmail/Postfix, налаштованими SPF/DKIM-записами та увімкненою функцією mail() в php.ini).