Тема с ошибками при отправке сообщений через форму обратной связи поднималась на форуме большое количество раз, но решения для своего случая я так и не нашел.
1. У друпала 6 версии все работает, письмо уходит, но все равно вначале высвечивается сообщение "Невозможно отправить e-mail. Свяжитесь с администратором сайта, если проблема повторяется", а ниже "Ваше сообщение отправлено". И сообщение-таки приходит.
2. У друпала 7 версии появляется такое же сочетание сообщений (см. вложение), но писем нет. Устанавливал MTP Authentication Support, связывался с провайдером (Агава) - ничего не помогает.
И в первом, и втором случае использую для отправки ящики mail.ru (перепробовал различные комбинации, в том числе и ящик на gmail.com).
Просьба:
1. Подсказать, как удалить сообщение "Невозможно отправить e-mail. Свяжитесь с администратором сайта, если проблема повторяется" для 6-ки, когда сообщения приходят,
2. Помочь найти причину неработы модуля contact для 7-ки. Установлена последняя версия модуля.
Спасибо за внимание.
Вложение | Размер |
---|---|
![]() | 87.92 КБ |
Комментарии
Вам надо не удалять уведомление об ошибке отправке, а решать проблему, из-за которой письмо не отправляется.
Обычно все это по логам довольно просто определяется, там пишется в чем причина. Саппорт просите, или сами смотрите.
Причин может быть много.
Вот с такой сталкивался - было подобное сообщение при попытке отправить письмо (на хостинге nic.ru). Решилось созданием ящика, который указывался как отправитель письма. Если отправляете с майла и тд - используйте smtp модуль.
А то получается, что сайт site.ru отправляет письмо, где указано, что отправитель site@mail.ru.
Вы невнимательно прочитали мое сообщение: я прошу помочь убрать сообщение на сайтах друпала 6 версии, где письма отправляются, но сообщение об ошибке все равно присутствует (см. аттач).
SMTP Authentication Support на 7-ке устанавливал - контрольное письмо с него не отправляется.
Почему-то такая схема на 6-ке работает без проблем (только вот сообщение об ошибке все равно приходит, вводя в заблуждение отправителя).
Помогли разобраться хостеры из Агавы:
оказывается суть проблемы заключается в том, особенность отправки почты с виртуального хостинга такова, что письма можно отправлять не чаще, чем 1 раз в 0,3 сек. Если отправлять письма скриптом, то они отправляются сразу пачкой и не проходят в этот интервал. Форма отправляет два письма одновременно, первое пользователю, второе администратору, поэтому добавить задержку необходимо, иначе второе письмо доставлено не будет. Легче всего этого избежать, добавив в скрипты sleep(1); после mail(), и тогда письма будут отправляться нормально. То есть, если скрипт для отправки писем имеет следующий вид:
<?php
mail("mail", "тема", "Сообщение1");
mail("mail", "тема", "Сообщение2");
?>
второе сообщение не будет отправлено, т.к. установлена задержка между отправками писем для того, чтобы снизить нагрузку на сервер при массовой отправке писем т.е. чтобы хостинг не использовался как спам-ресурс. Поэтому, чтобы второе письмо тоже доходило, необходимо установить задержку между отправкой писем, например так:
<?php
mail("mail", "тема", "Сообщение1");
sleep(1);
mail("mail", "тема", "Сообщение2");
?>
Таким образом, правку необходимо сделать в modules/contact/contact.pages.inc.
Ниже приведен фрагмент кода, где вставлены две строчки sleep(1);
drupal_mail('contact', 'page_mail', $to, language_default(), $values, $from);
sleep(1);
// If the user requests it, send a copy using the current language.
if ($values['copy']) {
drupal_mail('contact', 'page_copy', $from, $language, $values, $from);
}
sleep(1);
Таким образом, вопрос окончательно закрыт.
Всем спасибо