Mail () не работает, есть идеи, почему? - PullRequest
0 голосов
/ 14 февраля 2012

Привет, ребята, я использую mail () из контактной формы, и по какой-то причине он не работает.

PHP-кодирование, которое я настроил, выглядит следующим образом:

            // sending email to sales@xxx.com
        $to      = "hello@xxx.com";
        $subject = 'Email From {$name} from your website';
        $message = "$name has contacted you from the website and says:

        $mcontent

        $name 's contact email address is: $email"; 

        $headers = $email . "\r\n";
        $headers .= "Reply-To: " . $email . "\r\n"; 
        $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 

        mail($to, $subject, $message, $headers) or die ("Failure");
        // end of sending mail

        returnheader("/xxx/email-sent");  

я не получаю никаких ошибок, по завершению даже переходит на страницу успеха.

Любые идеи, почему это не сработает.

Ответы [ 7 ]

2 голосов
/ 14 февраля 2012

Я проверил ваш код, и он отлично работает на моем сервере, я получаю электронную почту. Здесь это выглядит как проблема с настройками вашего SMTP-сервера. В вашем PHP-скрипте нет ничего плохого. Вы можете найти свое решение здесь. php.ini & SMTP = - как вы передаете имя пользователя и пароль

Также в среде Windows, http://www.ruhanirabin.com/php-sendmail-setup-with-smtp-iis-and-windows-servers/

1 голос
/ 14 февраля 2012

mail() использует sendmail, по умолчанию: sendmail -t -i

Возвращает TRUE, если письмо было принято, а не если оно было отправлено:

Возвращаемые значения

Возвращает TRUE, если почта была успешно принята для доставки, иначе FALSE.

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

Я бы предложил использовать http://swiftmailer.org/ с SMTP вместо mail().

1 голос
/ 14 февраля 2012

Это, вероятно, связано с настройкой почты. У вас работает почтовый сервер? Проверьте настройки sendmail / smtp_server в php.ini.

1 голос
/ 14 февраля 2012
  • Если вы работаете в Windows, убедитесь, что в вашем php.ini есть SMTP-сервер
  • Если вы не используете Unix, убедитесь, что MTA запущен: если он есть (хотя бы частично)) установлен, но не запущен, вы получите именно этот эффект

Изменить

Если ваш MTA не запущен, и вы запускаете его, письма отправляются сPHP выйдет!Они были в очереди, но не обработаны.

0 голосов
/ 14 февраля 2012

Причина может быть, например, в том, что вы не настроили почтовый сервер или не настроили брандмауэр, если он у вас есть.

0 голосов
/ 14 февраля 2012

Первая строка $headers недействительна, если $email это просто адрес электронной почты.Предположительно, вы хотели бы что-то вроде:

$headers = "Cc: " . $email . "\r\n";

или

$headers = "From: " . $email . "\r\n";
0 голосов
/ 14 февраля 2012

Вы должны использовать двойные кавычки вместо одинарных кавычек в переменной $subject

$subject = "Email From {$name} from your website";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...