Page 1 of 1

Ошибка отправки писем из Wordpress через php

Posted: Wed Jul 01, 2015 9:01 am
by alexeykot
Здравствуйте!
Установлена Vesta 0.9.8 на Debian 7.8
Почтовый сервер exim4

Проблема возникает, когда пытаюсь через Wordpress, к примеру, восстановить пароль, пишет в ответ:
Сообщение не удалось отправить.
Возможная причина: на сервере отключена функция mail().
С самой панели Vesta письма уходят исправно.

Содержимое /etc/php5/apache2/php.ini

Code: Select all

[mail function]
SMTP = localhost
smtp_port = 25
sendmail_from = [email protected]
sendmail_path = /usr/sbin/sendmail
Пробовал просто создавать php-файл тестовый, вида:

Code: Select all

<?php
mail('[email protected]', 'тема письма', 'тело письма', 'From: [email protected]');
?>
Всё отправляется исправно.

Пожалуйста, подскажите, какую элементарную вещь я пропустил?
Я понимаю, что можно установить smtp-плагин для wordpress, но так как сайтов у меня много, то хотелось бы просто решить проблему стандартной отправки через php.

Всем заранее спасибо.

Re: Ошибка отправки писем из Wordpress через php

Posted: Wed Jul 01, 2015 9:53 am
by skurudo
Хороший механизм вам попался, но как в анекдоте - кто-то в нем копался.

Сравните содержимое
/etc/php5/apache2/php.iniShow

Code: Select all

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = [email protected]

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = On

; The path to a log file that will log all mail() calls. Log entries include
; the full path of the script, line number, To address and headers.
;mail.log =
; Log mail to syslog (Event Log on Windows).
;mail.log = syslog
/home/admin/conf/web/apache2.conf внутри директории можно добавить:

Code: Select all

php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f [email protected]"
Ну и поглядеть error_log по сайту не помешает, там могут быть подсказки.

Re: Ошибка отправки писем из Wordpress через php

Posted: Wed Jul 01, 2015 10:48 am
by alexeykot
Спасибо, самый дельный совет был посмотреть в логи.
Там было
PHP Warning: preg_match(): Compilation failed: internal error: previously-checked referenced subpattern not found at offset 728 in /home/admin/web/damain.com/public_html/wp-includes/class-phpmailer.php on line 879
Выяснилось, что был баг в установленной версии PHP - 5.5.25
Обновился до 5.5.26 и всё заработало :-)

Re: Ошибка отправки писем из Wordpress через php

Posted: Wed Jul 01, 2015 12:15 pm
by skurudo
alexeykot wrote:Спасибо, самый дельный совет был посмотреть в логи.
А то, всегда советуем - в логах половина решения, в больше чем 9000 случаях.
alexeykot wrote:Обновился до 5.5.26 и всё заработало :-)
Отлично же )