Настройки функции mail в PHP. Почему не работает mail в PHP? | OTUS
🔥 Начинаем BLACK FRIDAY!
Максимальная скидка -25% на всё. Успейте начать обучение по самой выгодной цене.
Выбрать курс

Курсы

Программирование
iOS Developer. Basic
-25%
Python Developer. Professional
-25%
Разработчик на Spring Framework
-25%
Golang Developer. Professional
-25%
Python Developer. Basic
-25%
iOS Developer. Professional
-25%
Highload Architect
-25%
JavaScript Developer. Basic
-25%
Kotlin Backend Developer
-25%
JavaScript Developer. Professional
-25%
Android Developer. Basic
-25%
Unity Game Developer. Basic
-25%
Разработчик C#
-25%
Программист С Web-разработчик на Python Алгоритмы и структуры данных Framework Laravel PostgreSQL Reverse-Engineering. Professional CI/CD Vue.js разработчик VOIP инженер Программист 1С Flutter Mobile Developer Супер - интенсив по Kubernetes Symfony Framework Advanced Fullstack JavaScript developer Супер-интенсив "Azure для разработчиков"
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK
-25%
DevOps практики и инструменты
-25%
Архитектор сетей
-25%
Инфраструктурная платформа на основе Kubernetes
-25%
Супер-интенсив «ELK»
-16%
Супер-интенсив «IaC Ansible»
-16%
Супер-интенсив "SQL для анализа данных"
-16%
Базы данных Сетевой инженер AWS для разработчиков Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Администратор Linux. Виртуализация и кластеризация Нереляционные базы данных Супер-практикум по использованию и настройке GIT IoT-разработчик Супер-интенсив «СУБД в высоконагруженных системах»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Настройки функции mail в PHP. Почему не работает mail в PHP?

PHP_Deep_25.12-5020-ea7d14.png

Какой бы интернет-проект на PHP вы не сделали, на нём должна быть форма обратной связи, что особенно актуально для проектов коммерческого направления. А значит, вам не обойтись без функции mail. Что же, давайте посмотрим, как использовать эту функцию для отправки сообщений.

Лирическое отступление

Прежде чем двигаться дальше, давайте немного вспомним теорию. Во-первых, чтобы отправлять письма нам потребуется SMTP-сервер. Но это не проблема, т. к. он есть практически на всех современных платных хостингах. Во-вторых, для приёма писем нам понадобится POP-сервер. В-третьих, следует понимать, что сам по себе PHP не отправляет сообщение, а лишь передаёт команды приложению sendmail — именно оно занимается отправкой, следовательно, его нужно иметь (если используете Денвер, то данное приложение уже встроено). В-четвёртых, все сообщения помещаются в директорию под названием «tmp/!sendmail».

Настройка mail в PHP

Настройка функции mail в PHP выполняется в конфигурационном файле php.ini. В этом файле нужно прописать путь к лог-файлам, а также задать значения порта.

Mail принимает 5 аргументов, три из которых являются обязательными, вот они: 1) адрес отправителя; 2) текст сообщения; 3) тайтл письма.

Приведём пример:

<?php
mail("test@otus.ru", "Заголовок", "Текст сообщения");
?>

Если вы являетесь веб-мастером и используете Денвер, то информация, которая будет вами отправлена, сохранится на виртуальном диске Z в папке «tmp!sendmail».

Особенности использования mail в PHP

Работа функции mail в PHP зависит от ряда нюансов, включая вид операционной системы, выполненные настройки и параметры. Вот некоторые особенности: — во время отправки письма заголовок Form задаётся через необязательный параметр «additional_headers». Если его нет, нередко возникает ошибка при отправлении; — заголовки разделяйте символами перевода на новую строку и перевода каретки (\r\n); — следите, чтобы длина строки не превышала 70 знаков, для регулировки тоже используйте (\r\n).

Что делать, когда функция mail в PHP не отправляет письма?

Даже если учесть всё вышеперечисленное, mail в PHP иногда не работает, причём на локальном сервере всё отправляется нормально. Одна из причин — некорректная настройка функции непосредственно на хостинге. Для решения проблемы рекомендуется обратиться к конфигурационному файлу php.ini и посмотреть на параметры функции «disable_functions». Дело в том, что нужная вам функция mail() может не работать, если она занесена в php.ini в раздел запрещённых (disable_functions).

1-20219-7653bc.jpg

Идём дальше. Мы можем проверить работоспособность, написав простой код и разместив его в корневом каталоге созданного веб-проекта:

<?
print mail("name@my.ru","header","text");
?>

Если всё функционирует верно, на экране браузера мы увидим цифру один — «1». Её нам вернёт «print» после выполнения. Что касается кодировки, то рекомендуется использовать UTF-8.

2-20219-865104.jpg

Важный момент! Если вы в качестве локального сервера используете OpenServer, то письма будут сохраняться в папке C:\openserver\userdata\temp\email. Естественно, если вы его установили на локальный диск «С».

Отправка с вложением

Давайте посмотрим, как отсылать сообщения, включающие в себя прикреплённый файл. Воспользуемся для этого функцией sendMailAttachment():

<?
$file = "./files/test.txt"; // прописывается путь к файлу, который следует отправить
$mailTo = "test@gmail.com"; // адрес отправителя
$from = "test@files.com"; // от кого письмо
$subject = "Test file"; // тема
$message = "Текст с вложением"; // содержимое письма
$r = sendMailAttachment($mailTo, $from, $subject, $message, $file); // отправка письма c вложением
echo ($r)?Отправлено':'Ошибка. Не отправлено!';
//$r = sendMailAttachment($mailTo, $from, $subject, $message); // отправка без вложения
//echo ($r)?Отправлено':'Ошибка. Не отправлено!';
?>

Как видите, работа функции mail в PHP совсем несложна. При этом мы рассмотрели лишь наиболее распространённые ошибки, возникающие при её реализации. Впрочем, повысить свои навыки PHP-программирования вы всегда сможете на наших курсах.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
1 комментарий
0

Очень плохая инструкция я думаю даже с ошибками и она не работает не учтены много нюансов просто не работает ваша инструкция :(

Для комментирования необходимо авторизоваться
🎁 Максимальная скидка!
Черная пятница уже в OTUS! Скидка -25% на всё!