Я использую тот же php-код, который я всегда использовал, чтобы попробовать отправить форму по электронной почте, и я получаю это сообщение:
Предупреждение: mail () [function.mail]: Не удалось подключиться к почтовому серверу на порту «localhost» 25, проверьте настройки «SMTP» и «smtp_port» в php.ini или используйте ini_set () в sendMailSuscribete.php в строке 44
это линии 40 – 54:
$header .= "From: $email" . "\r\n"; $header .= "Reply-To: $email" . "\r\n"; $header .= "Return-Path: $email" . "\r\n"; if(mail($to, $subject, $msg, $header)){ //Message sent! redirect("http://www.domain.com/suscribete.html"); }else{ // Display error message if the message failed to send echo " <div class=\"MsgError\"> <h1>Error…</h1> <p>Disculpa <b><?=$name;?></b>, tu mensaje falló en ser enviado. Por favor vuelve a intentar.</p> </div>"; }
Я уже проверял использование phpinfo()
и я знаю, что smtp установлен на localhost, а порт, который он использует, равен 25, поэтому я действительно не знаю, что такое ошибка.
Обновление. Я забыл сказать, что он работает на сервере Windows, и этот файл php является тем, который я всегда использовал для серверов Unix, должен ли он содержать что-то другое?
mail
не может отправлять электронную почту напрямую (по крайней мере, не в Windows), ей нужен SMTP-сервер. На хосте, на котором выполняется PHP-Script, нет SMTP-сервера. Решения:
Пункт 1. является хорошей идеей, потому что эти библиотеки предоставляют абстракции, которые делают ненужным работать с материалами низкого уровня, например, правильно помещая сообщения MIME. Точка 2., вероятно, самая маленькая проблема. Я советю против пункта 3. Если вы не серьезно относитесь к администрированию сервера электронной почты самостоятельно.
Можете ли вы попробовать использовать внешний почтовый сервер SMTP, например, Gmail? Если у вас есть учетная запись Gmail, вы можете попробовать добавить это перед своей почтовой командой:
ini_set("SMTP","ssl://smtp.gmail.com"); ini_set("smtp_port","465"); ini_set("username","<myaccount.gmail.com>"); # You need to change this ini_set("password","YOUR_PASSWORD"); # You need to change this
Я не тестировал эти настройки, но должен отправить вас в правильном направлении.
Какой почтовый сервер у вас есть? Некоторые ведут себя немного иначе … http://www.php.net/manual/en/function.mail.php (просто прокрутите вниз)