Электронная почта в PHP - PullRequest
       20

Электронная почта в PHP

0 голосов
/ 05 декабря 2009

Я нашел несколько уроков о том, как это сделать, но это не работает. Вот мой простой код электронной почты:

<?php

$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$zone = $_POST['zone'];
$call_time = $_POST['call_time'];
$comment = $_POST['comment'];

$to      = 'MY EMAIL';
$subject = '$name is interested in your product!';
$message = 'name = $name\nemail = $email\nphone = $phone\ntimezone = $zone\nbest time to     call = $call_time\nmessage = $comment';

if(mail($to, $subject, $message))
{
   echo "The information was successfully sent.";
}
else
{
   echo "The information was NOT sent.";
}
?>

(Как только я заработаю, я увеличу безопасность)
Итак, есть идеи, почему это не работает? Я получаю сообщение об успехе, но не письмо.

Хорошо, я думаю, я мог бы быть более конкретным:

  • Я использую Mac OS X
  • В настоящее время я тестирую свой сайт на MAMP (локальный сервер Apache, MySQL и PHP: D)
  • Очевидно, я поставил действительное письмо в поле "to".
  • Когда я записываю ошибки в файл журнала, я не вижу никаких

Я использую Mac OS X

Ответы [ 4 ]

2 голосов
/ 05 декабря 2009

PHP, вероятно, успешно передает электронную почту на ваш локальный SMTP-сервер (я думаю, что это постфикс). Это даст вам сообщение об успехе. И, вероятно, postfix на вашем компьютере не настроен на успешную отправку электронной почты. Или порт 25 заблокирован вашим провайдером. Или что-то еще на стороне почтового сервера.

Ваш PHP в порядке. Я думаю, у вас есть проблема с настройкой SMTP-сервера.

0 голосов
/ 05 декабря 2009

Попробуйте использовать Zend_Mail из Zend Framework, вам может быть проще.

0 голосов
/ 05 декабря 2009

В * nix-системах, в которых mail () возвращает true, просто означает, что PHP смог связаться с sendmail (или одним из его заменителей) в вашей системе. True просто указывает, что он нашел sendmail в том месте, где ожидал, и смог передать сообщение без ошибок.

Возвращаемое значение довольно универсально бесполезно, поскольку: как вы видели, оно вернет true, когда почта действительно никуда не денется, и при некоторых обстоятельствах оно может фактически вернуть false и доставить почту успешно.

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

0 голосов
/ 05 декабря 2009

Во-первых, вы должны прочитать PHP mail page . Есть ряд подводных камней.

Я бы также проверил, действительно ли вы запускаете SMTP-сервер на компьютере, на котором вы запускаете PHP-скрипт.

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