Я надеюсь, что кто-то сможет мне помочь, так как я не знаю, что является причиной проблемы.
Наш веб-сайт имеет форму обратной связи с полями для имени, адреса электронной почты, имени ребенка, идентификатора ребенка и сообщения.
Когда форма отправляется, php-код на стороне сервера проверяет поля формы, и, если все хорошо, использует встроенную функцию php mail () для отправки 2 электронных писем.
Электронная почта 1 отправляется в почтовый ящик на хост-сервере Exchange, содержащий значения в полях формы.
Электронное письмо 2 отправляется лицу, отправляющему форму, с благодарностью - мы скоро свяжемся с вами.
Для электронной почты 1 заголовки From, Reply-To и Return-Path устанавливаются на адрес электронной почты, введенный в форме, а параметр To в функции mail () является адресом электронной почты входящей почты размещенного обмена. сервер.
Для электронной почты 2 заголовки From, Reply-To и Return-Path устанавливаются на адрес электронной почты входящей почты на размещенном сервере обмена, а параметр To в функции mail () - это адрес электронной почты, введенный в форма.
Хост веб-сайта имеет правильно настроенные записи MX, PTR, SPF и TXT, позволяющие отправлять электронные письма на адрес электронной почты, входящий в почтовый ящик хост-сервера обмена, и с него.
Хост веб-сайта использует QMail в качестве службы SMTP, которая фактически отправляет электронные письма, и во всех тестах QMail получает успех при отправке электронной почты 1 и 2. Функция mail () не выдает ошибку.
Локальные тесты проводились с IE8, Chrome и FF3.6.17. Код не был изменен между тестами, показывающими эту проблему.
Во всех тестовых случаях электронное письмо 2 (обратно человеку, отправляющему форму) отправляется просто отлично.
Электронная почта 1, с другой стороны, работает только периодически. Общая схема такова, что в первый раз, когда контактная форма используется с каждым отдельным адресом электронной почты в форме, электронное письмо отправляется нормально, а заголовки и - верны.
Во второй раз, когда форма контакта используется с ранее использованным адресом электронной почты в форме, параметру Кому присваивается адрес электронной почты в форме, все заголовки пустые, несмотря на неправильный адрес электронной почты Кому Электронная почта
не получено.
Персонал службы поддержки хоста веб-сайта, возможно, обнаружил еще один потенциальный симптом, который заключается в том, что после очистки файлов cookie все письма 2 прошли нормально. Тем не менее, страница не использует куки в отношении формы.
Наконец, я попытался снова некоторое время (30 минут?) После того, как электронная почта 2 не прошла, затем сработала другая попытка, после которой электронная почта 2 облажалась, как описано выше.
Есть ли известная ошибка с функцией php mail () по этим направлениям? Существует ли максимальная частота использования mail ()?
Я в недоумении, почему код иногда работает, а иногда нет. Персонал сайта также в растерянности.
Попытка решить эту проблему в Google, похоже, поднимает форумы людей, которые говорят, что используют разные модули (Swift Mailer, PHPMailer, Pear Mail и т. Д.), Но поскольку веб-сайт работает, я опасаюсь, что перестройка кода автоматической рассылки
вносить ошибки, помимо описанных выше.
... отредактировано 6jun11 ...
извините, я не знал, что могу отредактировать свое сообщение ...
Вот самый подходящий код:
function UserToSiteEmail( $name, $fromEmail, $message, $kidID, $kidName )
{
$subject = "Face of Kinder - contact us";
$headers = GetEmailHeaders($fromEmail);
$imageFilename = constant("URL_ROOT")."/kidimages/".$kid->ImageFilename;
$profileUrl = constant("URL_ROOT")."/profile.php?k=".$kid->KidID;
$body = file_get_contents("EmailTemplates/ContactUs.html");
$body = str_replace("#FromName#",$name,$body);
$body = str_replace("#FromEmail#",$fromEmail,$body);
$body = str_replace("#KidName#",$kidName,$body);
$body = str_replace("#KidID#",$kidID,$body);
$body = str_replace("#Message#",$message,$body);
$body = str_replace("#SiteRoot#",constant("URL_ROOT"),$body);
return mail(constant("FROM_EMAIL"),$subject,$body,$headers);
}
function GetEmailHeaders( $fromEmail )
{
$headers = "From: Face of Kinder <" . $fromEmail . ">" . PHP_EOL;
$headers .= "Reply-To: " . $fromEmail . PHP_EOL;
$headers .= "Return-Path: " . $fromEmail . PHP_EOL;
$headers .= 'MIME-Version: 1.0' . PHP_EOL;
$headers .= 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL;
return $headers;
}
Функция UserToSiteEmail () использует данные из формы обратной связи, где параметром $ fromEmail является адрес электронной почты, введенный в форму. Из того, что Rackspace мог найти в журналах QMail, было то, что, когда отправляется 2-е использование того же адреса электронной почты в форме контакта, электронное письмо в форме заканчивается в поле «Кому», а не в заголовках, и адрес почтового ящика не указывается. не показывать нигде (даже заголовки - то есть, это не поменялось). Это несмотря на то, что один и тот же код правильно помещает электронную почту формы в заголовок и адрес электронной почты в поле «Кому» при первой отправке формы (для браузера).
Я могу добавить сторону HTML формы, если необходимо, но с точки зрения ее обработки, после того, как форма отправлена обратно себе, после проверки и отправки по электронной почте, php перенаправляет на страницу благодарности. Я не уверен, как переменные GET & POST сохранятся после страницы благодарности, так как единственный способ вернуться на страницу - это снова щелкнуть ссылку для контактной формы. Чтобы увидеть текущий процесс (без проблем - поскольку он, кажется, только появляется при использовании домена почтового ящика), вот ссылка на страницу со ссылкой «Свяжитесь с нами» в нижнем колонтитуле: http://www.faceofkinder.com/home.php.
Я полагаю, что журнал QMail, указывающий на сбой, тоже может помочь ...
342812-web2 qmail-queue-handlers[1147]: Handlers Filter before-queue for qmail started ...
342812-web2 qmail-queue-handlers[1147]: from=
342812-web2 qmail-queue-handlers[1147]: to=orionculver@b-street.co.uk
342812-web2 qmail-queue-handlers[1147]: hook_dir = '/var/qmail//handlers/before-queue'
342812-web2 qmail-queue-handlers[1147]: recipient[3] = 'orionculver@b-street.co.uk'
342812-web2 qmail-queue-handlers[1147]: handlers dir = '/var/qmail//handlers/before-queue/recipient/orionculver@b-street.co.uk'
342812-web2 qmail-queue-handlers[1147]: starter: submitter[1148] exited normally
342812-web2 qmail: 1307092428.798059 bounce msg 18353656 qp 1147
342812-web2 qmail: 1307092428.798116 end msg 18353656
342812-web2 qmail: 1307092428.798338 new msg 18353663
342812-web2 qmail: 1307092428.798366 info msg 18353663: bytes 4902 from <> qp 1148 uid 2522
342812-web2 qmail: 1307092428.800937 starting delivery 2481: msg 18353663 to remote orionculver@b-street.co.uk
342812-web2 qmail: 1307092428.801071 status: local 0/10 remote 2/20
342812-web2 qmail-remote-handlers[1149]: Handlers Filter before-remote for qmail started ...
342812-web2 qmail-remote-handlers[1149]: from=
342812-web2 qmail-remote-handlers[1149]: to=orionculver@b-street.co.uk
342812-web2 qmail: 1307092430.526801 delivery 2481: success: 98.129.184.131_accepted_message./Remote_host_said:_250_OK_BD/F0-16184-DC5A8ED4/
342812-web2 qmail: 1307092430.526909 status: local 0/10 remote 1/20
342812-web2 qmail: 1307092430.526938 end msg 18353663
342812-web2 qmail: 1307092430.576988 delivery 2480: success: 98.129.184.131_accepted_message./Remote_host_said:_250_2.0.0_Ok:_queued_as_6D/F0-16184-DC5A8ED4/