PHP отправляет почту в Windows, вызывая ее «зависание» после отправки электронной почты - PullRequest
5 голосов
/ 27 августа 2009

мы начинаем создавать веб-приложение. Мой коллега разрабатывает на Linux, и я работаю через стек WAMP под управлением Windows XP. Мы используем Zend.

Когда мы отправляем форму и отправляем письмо по электронной почте Zend, электронное письмо отправляется, а затем я получаю пустой экран, на компьютере с linux приложение будет работать нормально.

Итак, я написал свой собственный маленький скрипт mail.php, который использует phpmailer - и происходит то же самое: электронное письмо отправляется, а затем появляется пустой экран. Итак имеем:

if(!$mail->Send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo "Message has been sent";
}

Таким образом, об ошибке не сообщается, электронное письмо отправляется, но «Сообщение было отправлено» никогда не печатается на экране (или что-либо еще, обычный HTML тоже).

Я не очень техничен, поэтому извиняюсь за очевидные шаги по отладке. Есть ли что-то особенное в конфигурации Windows php, которое я пропустил?

Это удаленный SMTP-сервер с аутентификацией.

Ответы [ 4 ]

1 голос
/ 28 августа 2009

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

<?php
phpinfo();
?>

Он должен находиться в разделе PHP Core - если он пуст, отредактируйте файл php.ini и включите log_errors и укажите, где вы хотите разместить файл.

Ошибки, которые я не смог отобразить, я нашел, используя это.

UPDATE

Покопался, и кажется, что Zend_Mail, по сути, является оберткой для функции mail () PHP согласно документации: http://framework.zend.com/manual/en/zend.mail.html

Имея это в виду, есть некоторая информация о функции PHP mail mail () в руководстве по PHP, которую вы захотите посмотреть относительно SendMail http://www.php.net/manual/en/ref.mail.php первого комментария на странице (на момент написания статьи) содержит все подробности о настройке вашего сервера WAMP для работы в качестве * nix-сервера - по крайней мере, в том, что касается операций mail (); -)

1 голос
/ 29 августа 2009

Я использую phpmailer с успехом на коробке с Windows (мой компьютер разработчика). Могу ли я увидеть установочный код? Я делаю что-то вроде ниже. Во-первых, вам нужно убедиться, что модуль openssl установлен в php, если вы используете ssl. Посмотрите на ниже. Убедитесь, что ваш флаг SMTPDebug настроен на вывод, с которым вы можете работать.

<?php

$mail             = new PHPMailer();

$mail->IsSMTP();
$mail->Host       = "blah.com";
$mail->SMTPDebug  = 1;
$mail->SMTPAuth   = true;
$mail->SMTPSecure = "ssl";
$mail->Host       = "mail.blah.com";
$mail->Port       = 465;
$mail->Username   = "noreply@blah.com";
$mail->Password   = "smtppass";

$mail->SetFrom('noreply@blah.com', 'Blah Name');
$mail->AddReplyTo("noreply@blah.com", "Blah Name");
$mail->Sender = "noreply@blah.com"

?>
1 голос
/ 27 августа 2009

Звучит так, будто вы получаете ошибку, но просто ее не видите. Убедитесь, что это есть где-то в вашем коде

ini_set( 'display_errors', 1 );
error_reporting( E_ALL );

И проверьте ваши логи apache на 500 ошибок.

0 голосов
/ 15 сентября 2009

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

Спасибо всем за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...