Не работает php mail на сервере

Почему PHP функция mail() не работает на сервере?

Все время выдает ошибку. Вроде бы сервер нормально настроили, все пакеты поставили, пути проверили, а не работает.
Практически такой же сервер нормально работает с mail().

Что проверить? На что обратить внимание? Что обновить?

Проверьте установлена ли почтовая служба: sendmail, postfix или другая.
Проверьте запущена ли почтовая служба.

Для sendmail/postfix проверьте настройки в php.ini:

Проверьте в php.ini не внесена ли функция mail в список запрещённых функций:
disable_functions

Не работает php mail на сервере. Смотреть фото Не работает php mail на сервере. Смотреть картинку Не работает php mail на сервере. Картинка про Не работает php mail на сервере. Фото Не работает php mail на сервере

Не работает php mail на сервере. Смотреть фото Не работает php mail на сервере. Смотреть картинку Не работает php mail на сервере. Картинка про Не работает php mail на сервере. Фото Не работает php mail на сервере

Не работает php mail на сервере. Смотреть фото Не работает php mail на сервере. Смотреть картинку Не работает php mail на сервере. Картинка про Не работает php mail на сервере. Фото Не работает php mail на сервере

Не работает php mail на сервере. Смотреть фото Не работает php mail на сервере. Смотреть картинку Не работает php mail на сервере. Картинка про Не работает php mail на сервере. Фото Не работает php mail на сервере

Вот что там отключено: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority

Есть что-то способное повлиять на мою проблему?

Не работает php mail на сервере. Смотреть фото Не работает php mail на сервере. Смотреть картинку Не работает php mail на сервере. Картинка про Не работает php mail на сервере. Фото Не работает php mail на сервере

pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,
pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,
pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,
pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority

Источник

mail() не работает на сервере

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Функция mail не работает на сервере
Тех поддержка говорит что у них в принципе эта функция работать не будет. ссылаются на такой код.

JS работает медленно на сервере. На локальном сервере быстро. В чём разница
Вечер добрый Сайт уже загрузил все JS/CSS/HTML. И после этого начинаются лаги. При открытие.

создать mail на сервере
Подскажите пожалуйста как сделать для своего движка mail, вот например на сервере есть сайт, этот.

Посмотрел! Но не понимаю где искать в этом огромном списке.

Подскажите пожалуйста как прописать в php.ini разрешение для mail().

Огромное СПАСИБО prudkiy. Я свой усовершенствовал, но не пойму эту строчку.

Добавлено через 2 минуты
Вот ошибка которую выдает мой сайт:

You don’t have permission to access /mail/index.php on this server.

Apache/2.2.15 (CentOS) Server at blognauki.in.ua Port 80

Что с этим делать подскажите?

А то что выдал тебе браузер означает что нужно менять сервер, он запрещает использовать функцию mail(), довольно таки редкое явление.

Добавлено через 8 минут

Огромное СПАСИБО prudkiy. Я свой усовершенствовал, но не пойму эту строчку.

Добавлено через 2 минуты
Вот ошибка которую выдает мой сайт:

You don’t have permission to access /mail/index.php on this server.

Apache/2.2.15 (CentOS) Server at blognauki.in.ua Port 80

Что с этим делать подскажите?

Ребята, новая проблема. В поддержку написал, сказали что запустили. Но теперь при отправки рассылки, мне на почту приходит письмо:

This is the mail system at host hosting1.citydomain.com.ua.

I’m sorry to have to inform you that your message could not
be delivered to one or more recipients. It’s attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

Спасибо за найденную ошибку.

Добавлено через 6 минут
Подскажите как быть.
У меня есть форма с которой я планирую отсылать подписчикам текст с ссылками на статьи.

пропустит html текст (чтобы в код не лесть просто скопировать его в форму), или есть другой способ?

А без плагина ни как?
У меня простенькая задача:
1)Новая статья;
2)Я отсылаю подписчикам:
«Здравствуйте есть новая статья СТАТЬЯ»

А без плагина ни как?
У меня простенькая задача:
1)Новая статья;
2)Я отсылаю подписчикам:
«Здравствуйте есть новая статья СТАТЬЯ»

Добавлено через 12 минут
и да, textarea пропустит html код )

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Mail() на локальном сервере
Захотелось потестить функцию mail() на локальном сервере. Я начал гуглить, и почти во всех форумах.

Добавление e-mail в список рассылки на сервере.
Здравствуйте. Чтож. не поможите и новичкам? Понимаю что видимо данный механизм предельно.

PHP скрипт (SellFileEasy) работает на локальном сервере, но не работает на хостинге
Всем доброго времени суток! Данный скрипт предназначен для продажи файлов. При переходе на.

Источник

Функция PHP mail не работает на сервере Centos

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

Он всегда печатает 1. Тот же код работает нормально в другом проекте. Пожалуйста, направьте меня, что я могу сделать, чтобы включить его здесь? Любая помощь будет высоко ценится!

7 ответов

после установки sendmail* и выполнения следующих команд:

у меня все еще была та же проблема. Я проверил свой /var/log/maillog и увидел ошибку:

после дополнительных поисков я изменил /etc/hosts from:

и теперь функция почты теперь работает нормально.

Я знаю, что на это был дан ответ, но у меня была аналогичная проблема. В случае, если кто-то еще.

/var/log / maillog показал мне проблему с разрешением Postfix.

отслеживание ошибки я нашел решение для политики SELinux на CentOS (я использую версию 6).

короткий ответ: setsebool httpd_can_sendmail 1

EDIT: я бы прокомментировал, но у меня еще недостаточно репутации.

у меня была та же проблема. У меня есть сервер разработки дома и сервер prod на внешнем сервере, а входящие письма идут на другой сервер. PHP: s mail() прекрасно работает в серверном доме, но не дома.

я немного протестировал и заставил его работать дома так же, как и в server house. Разница между методами в server house и home заключается в конфигурации sendmail. Серверный дом мне нужно было только установить sendmail, и это было хорошо, но дома мне также пришлось установить sendmail-cf и использовать его для добавления адреса сервера исходящей почты.

предположим, у вас есть Centos, Apache и PHP на домашнем сервере, и вы хотите отправлять электронные письма с помощью функции PHP:s mail ().

1) Установите имя хоста на домашнем сервере в двух местах: /etc/sysconfig /network и/proc/sys/kernel / hostname таким образом:

Источник

Грамотная настройка сервера отправки почты для скриптов PHP, настройка функции mail()

В этом топике вы узнаете, как грамотно настроить, сервер исходящей почты и в частности функцию mail() в PHP. Сам являюсь жутким педантом. Люблю, что бы везде было все на своих местах, не терплю халтуры. Увидев один раз полную чушь в заголовках письма со своего сервера я разобрался с этим кардинально и безоговорочно. Под грамотной настройкой я подразумеваю такую, которая удовлетворяет потребности спам фильтров крупных почтовых систем, и просто выглядело красиво и осмысленно.
Не работает php mail на сервере. Смотреть фото Не работает php mail на сервере. Смотреть картинку Не работает php mail на сервере. Картинка про Не работает php mail на сервере. Фото Не работает php mail на сервере
Как известно протокол SMTP не подразумевает никаких средств защиты от спама и аутентификации пользователя, поэтому крупными и не очень компаниями были придуманы «фиксы» безопасности протокола.
Если вы устанавливаете выделенный сервер с доменом размещенным на нем, очень рекомендуется выполнить данные настройки, что бы все было как надо.

На изучение этого вопроса я потратил немало времени, разобравшись в каждом заголовке. Начал с базовой настройки из пакетов, при этом из предоставляемых пакетов выбрал, то что понравилось, а закончил тонким феншуем, который я так до конца не воплотил, ибо это уже было совсем изыск.

Название заголовка выбрал именно такое, так как вначале своего пути я искал что-то вроде этого. Настраивать будем postfix, php, dns (ptr, spf), и другое.

Эта статья будет интересная людям, настраивающим выделеные сервера, но не менее интересна для обычных программистов.
К слову данную инструкцию я использую для своих проектов. Системы автоматизированного получения приглашений и получения виз в страны Шенгена: https://goingrus.com/ru, весь софт крутится на виртуальной машине.

Подробности под катом

Преамбула

Кто-то пользуется либами, которые заменяют функцию mail (например phpmailer), они могут общаться с SMTP напрямую, а могут отправлять и на локальный сервер. Но лучше использовать стандартную встроенную и настроенную функцию PHP mail() которая будет отправлять почту на локальный сервер исходящей почты, который в свою очередь будет с ней сам разбираться. При использовании данной функции тормозов всегда наименьшее количество, так как локальный почтовый агент быстро принимает либо отклоняет почту, а если принимает, то доставляет самостоятельно.

Статья отформатирована не самым лучшим образом. Извиняюсь, время поджимает, а рассказать хочется пока вспомнил, а то потом не времени будет.

Чем проверять нашу работу?

Тестируем вот этим методом

Мы будем очень много читать заголовки писем. Просматривать заголовки очень удобно в gmail, там есть такая фишка в 2 клика, сами найдете.

Каких целей в заголовках нам требуется достичь?

— Вот этих заголовков от gmail.com
Прошу заметить, что это заголовки с которыми письмо попадает в ящик конечного пользователя

— А так же этих заголовков от mail.ru

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

Приступим

— Совет
Господа, я люблю ставить все пакетами и новичкам не советую заниматься самодеятельностью, во многих пакетах уже есть скрипты автоматической настройки, результаты которых надо только чутка подправить и все будет хорошо. Кроме того, из репозиториев оно само обновляется и вообще меньше запары просто потому что её меньше.

— Настройка PHP
Ставим как хотим php, это вы как-нибудь без меня.

Идем в настройки php, заменяем эквивалентно:

Этим мы указали заголовок Return-Path:

Кстати 1: это будет таковым для всех виртуальных доменов сервера, что бы это исправить и настроить под текущий, то требуется передать 5-й параметр в функцию mail().

Кстати 2: если вы поставите 5-й параметр на обычном виртуальном хостинге, то вам тоже рекомендуется проводить настройку вашего домена, как это описано ниже. Обращаю внимание, что операцию с PTR записями сделать невозможно, так как 1 IP = Домен, ну или по крайней мере не рекомендуется делать их 2, не помню уже.

— Настройка MTA, он же локальный сервер исходящей почты
Я вам искренне советую postfix, далее идем в настройки /etc/postfix/main.cf
для тех, кто уже нарвался на sendmail, и понял как они трудно выпиливаются из системы, советую команду:

Далее, делаем эквивалетно вот так
myhostname = goingrus.com
#smtp_helo_name = srv.goingrus.com
mydestination = _ALL_, goingrus.com, srv.goingrus.com, localhost.goingrus.com, localhost

(srv.goingrus.com — это мой сервер в домене goingrus.com)

— Если я не ошибаюсь, это помогло. Когда агент доставки представляется другому серверу передается HELO. Поменяете myhostname, поменяется следующий заголовок:
Message-Id:

— smtp_helo_name по дефолту это myhostname, читаем матчасть

— mydestination — если я не ошибаюсь, это задает те домены с которых MTA будет принимать почту на обработку, если у вас виртуальный хостинг (что я устроил на сервере дома), то без _ALL_ у вас будут проблемы с отправкой почты с других доменов кроме указанных.

Ну вот, видите, заголовки уже намного правильнее не так ли, а то ужас поначалу был.

— Разборки с почтовыми сервисами (почтовики)
А они нас считают как недобрый источник.
Наш сервер смог правильно helo представиться, но вот только почтовики нам все равно не доверяют.
Для этого были придуман алгоритм, для того что бы владелец домена с помощью DNS (если он конечно грамотный как мы) мог указывать, что вот таким-то серверам можно доверять, а другим нельзя.

У вас вместо ужаса который сейчас должно получиться вот это:

Мы уже на пути к истине. К слову, по умолчанию, почтовик все считает как v=spf1

all, что понижает уровень порога входа в блек лист, и а так же можно пользоваться вашим доменом для отправки спама, и вас сами того не знали пометят как плохиша на будущие времена.

v=spf1
это означает, что версия алгоритма spf1

+mx
Можно доверять почте если она отправлена с серверов mx, например если mx.goingrus.com это сервер приема, то если этот сервер будет отправлять, то все будет хорошо.

+a:goingrus.com
Можно доверять серверу, обслуживающий домен goingrus.com

так же добавлю, например на моем почтовом сервере разместился pupkin.ru.
Я дал Пупкину погонять мой почтовый сервер исходящей почты srv.goingrus.com (обычная ситуация виртуального хостинга, он всегда стоит локально, как бд, и все все все). Тогда он у себя должен настроить +a:srv.goingrus.com

+include:gmail.com
Импортируем все правила gmail.com, у них тоже есть такая запись TXT для своих серверов. (я использую сервисы google для домена)

-all
Указываем, что админ считает другие места не своими, и это может быть ближайший бордель в подворотне рассылающий спам от моего имени
(+all а это означает, что весь мир мои друзья)

— Разборки с почтовыми сервисами, настройка обратной PTR
Почтовики еще спрашивают обратные доменные зоны PTR для дополнительной галочки, думаю эта галочка одна из самых жирных, так как она 100% определяет сервер, и если он ведет себя правильно, то ему очень сильно доверяют и любое письмо наверняка дойдет до адресата.
X-Mru-PTR: goingrus.com, он же есть в google наврное это Received: from goingrus.com (goingrus.com. [188.134.79.140])

Заметка:
В виртуальном хостинге вам это сделать не дадут, у них на этот адрес замапин свой сервер, какой-нибудь servername.badhosting.ru, на котором вы и размещаетесь, да и вообще только на собственном серваке с собственным IP это возможно провернуть.

Интересно: Если вы живете дома, а у меня один из серверов стоит дома, в частности goingrus.com. Что делать? вроде IP выделенный, а обратный адрес, не настроить. Я позвонил выше (к провайдеру) сказал мол так и так хочу PTR зону. Мне её сделали, очень доволен.

Еще немного слов о заголовках (все вперемешку)

X-Mru-BL: 0:0:0:0 упаси вас иметь что-нибудь кроме нолей, это блеклисты.
X-Mru-OF: интерфейс с которого посылается, я так и не понял от чего это зависит.
X-PHP-Originating-Script: — я бы советовал добавлять, хотя если вы очень печетесь о безопасности и неразглашении, то можно и запретить. Делается это неподалеку от той настройки PHP которой мы делали. По умолчанию включено.

Еще можно и интересно посмотреть что пишет Яндекс при приеме, очень интересно.

Дополнительно

Там еще какие-то цифровые подписи есть.
определяется заголовком, DKIM-Signature
С виду у меня уже было все в порядке, а этот заголовок не очень нужен. Он нужен обычно сервисом очень крупного масштаба вроде facebook или google где рассылка уведомлений и почты идет в гигатонном масштабе. Если ваш сервис не обладает миллионами пользователей, то не думайте об этом, хотя если вы изыскатель — напишите как об этом здесь и мы свяжем статьи — что бы все казалось полностью законченным, только я прошу намного проще написать, так как уже где-то видел статьи про это все. От себя добавлю что мне было лень устанавливать еще один пакет, разбираться и еще что-нить.

Материала к сожалению нет, так как по крупицам отовсюду собирал 4 месяца назад, потом меня не было времени, а теперь я написал по памяти.

Удачной грамотной настройки вашего сервера. Я попробовал объяснить хотя бы один из нескольких аспектов настройки.

Источник

Настраиваем функцию mail в PHP

Не работает php mail на сервере. Смотреть фото Не работает php mail на сервере. Смотреть картинку Не работает php mail на сервере. Картинка про Не работает php mail на сервере. Фото Не работает php mail на сервере

В этой статье пойдет разговор о том, как выполнить настройку своего Mail на PHP. Рассмотрим особенности использования Mail, что делать, если письма не отправляются, как выполняется отправка с вложением и какие бывают проблемы с кодировкой.

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

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

Прежде чем двигаться дальше, давайте немного вспомним теорию. Чтобы отправлять письма, нам потребуется почтовый сервер SMTP. Но это не проблема, т. к. он есть практически на всех современных платных хостингах. SMTP — сетевой протокол (protocol), используемый для передачи почты в сетях TCP/IP. Почтовые серверы и прочие агенты пересылки задействуют SMTP для получения и отправки сообщений.

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

Как настроить mail?

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

Общее описание функции:

Не работает php mail на сервере. Смотреть фото Не работает php mail на сервере. Смотреть картинку Не работает php mail на сервере. Картинка про Не работает php mail на сервере. Фото Не работает php mail на сервере

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

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

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

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

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

Не работает php mail на сервере. Смотреть фото Не работает php mail на сервере. Смотреть картинку Не работает php mail на сервере. Картинка про Не работает php mail на сервере. Фото Не работает php mail на сервере

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

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

Не работает php mail на сервере. Смотреть фото Не работает php mail на сервере. Смотреть картинку Не работает php mail на сервере. Картинка про Не работает php mail на сервере. Фото Не работает php mail на сервере

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

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

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

Проблемы с кодировкой

Бывает, что после доставки сообщения поступают в виде вопросов «?» либо каких-то непонятных символов. Это свидетельствует о проблемах с кодировкой. Проблема может заключаться в заголовке From. Такие заголовки по стандарту должны быть в US-ASCII. Существуют 2 формы кодирования —BASE64 и Quoted-Printable. BASE64 более универсальна и может работать с UTF-8, поэтому лучше использовать ее. Пример:

Не работает php mail на сервере. Смотреть фото Не работает php mail на сервере. Смотреть картинку Не работает php mail на сервере. Картинка про Не работает php mail на сервере. Фото Не работает php mail на сервере

Однако в данном варианте заголовки могут быть нечитаемы. Для решения данной проблемы следует написать заголовок так:

Не работает php mail на сервере. Смотреть фото Не работает php mail на сервере. Смотреть картинку Не работает php mail на сервере. Картинка про Не работает php mail на сервере. Фото Не работает php mail на сервере

Также необходимо использовать исключительно кодировку UTF-8.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *