Некорректная отправка почты WordPress?
На сайте есть несколько точек отравки почты - Contact Form 7 + из кода wp_mail() (внути ajax экшенов + внутри вызовов rest api)
Отправка почты корректно работает на dev-сервере.
Работает при переносе на местный хостинг.
При переносе на веб-хостинг GoDaddy:
отправка CF7 - работает
обычный php mail() - работает
через wp_mail() - нет.
Какие возможные причины могут быть?
p.s. набор модулей и версии PHP на всех хостах совпадают
Дополнительно:
Ответы:
Какие возможные причины могут быть?
запрет на отправку ("закрыт 25 порт " и т.п.) - чтобы не спамили
может сниматься, а может и нет
поищите в FAQ или запросите саппорт
и да, гдедди выпирает с доменов пользователей РФ, письма поприходили, так что имейте в виду, если попадаете под
хостинг OVH например сильно не хуже, и не только
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Если Contact Form 7 и обычный
mail()работают, а Ваши вызовыwp_mail()из Ajax/REST не работают только на GoDaddy, нужно смотреть не “WordPress вообще”, а окружение и контекст вызова.wp_mail()внутри WordPress использует PHPMailer и фильтры, поэтому результат может отличаться от прямогоmail().Проверьте по шагам:
wp_mail()— true или false;wp_mail_failed;Добавьте логирование ошибки:
add_action('wp_mail_failed', function ($error) { error_log('WP mail failed: ' . print_r($error->get_error_message(), true)); error_log(print_r($error->get_error_data(), true)); });
И тестовый вызов:
$sent = wp_mail( 'test@example.com', 'Test email', 'Test message', ['Content-Type: text/plain; charset=UTF-8'] ); error_log('wp_mail result: ' . ($sent ? 'yes' : 'no'));
Частая причина на хостингах: письмо отправляется с From, который не принадлежит домену сайта. Например сайт
example.com, а From стоит Gmail или произвольный адрес. Нужно ставить отправителя на домене сайта:add_filter('wp_mail_from', function () { return 'noreply@example.com'; }); add_filter('wp_mail_from_name', function () { return get_bloginfo('name'); });
Надёжнее всего подключить SMTP через нормальный почтовый сервис или SMTP-ящик домена. Тогда CF7, REST, Ajax и кастомный код будут отправлять одинаково. На GoDaddy также стоит проверить лимиты исходящей почты и SPF/DKIM/DMARC, иначе письма могут “отправляться”, но не доходить.