2012-03-10 2 views
0

Я создаю страницу «забытого пароля», в которой пользователь вводит свой адрес электронной почты, и скрипт находит пароль, связанный с этим письмом, и отправляет его на сохраненный адрес электронной почты.Предупреждение: mail() [function.mail]: ответ SMTP-сервера: 550 Недопустимый получатель:

Я считаю, что проблема связана с моим SMTP-сервером Mails. Я использую WAMP, у которого его нет, поэтому я загрузил тот, который был бесплатным.

Это PHP скрипт я использую:

$id = checkEmail($email); 
    $record = readMemberRecord($id); 
    $password = @mysql_result($record,0,'cred'); 

    if($password){ 
     $email_subject = "Email Request"; 
     $email_body = "Your password is ".$password."."; 
     $header = "NinjaMan"; 
     mail($email, $email_subject, $email_body,$header); 
     $msg = "Your password has been sent to ".$email."."; 
    }else{ 
     $msg = "Sorry, the email ".$email." wasn't found."; 
    } 

$ МСГ выходы правильно, так что я знаю, что код проходит функцию почты.

+0

Если сообщение об ошибке "Invalid получателя не следует адрес электронной почты, я уверен,' $ email' переменная пуста. –

+0

var_dump ваши переменные, чтобы увидеть, являются ли они тем, что вы ожидаете от них в первую очередь. Если это так, то проблема, вероятно, связана с вашей конфигурацией SMTP, и в этом случае вы можете отправить сообщение на сервере. – j08691

+0

его не пусто. переменная $ msg во втором операторе if выводится. Он переносит переменную $ email и отображается правильно. "$ msg =" Ваш пароль отправлен на адрес ". $ email.". ";" работает. –

ответ

3

Попробуйте отправить в надлежащий «С» в $header.

$emailFrom = "[email protected]"; // match this to the domain you are sending email from 
$email = "[email protected]"; 
$subject = "Email Request"; 
$headers = 'From:' . $emailFrom . "\r\n"; 
$headers .= "Reply-To: " . $email . "\r\n"; 
$headers .= "Return-path: " . $email; 
$message = "Your password is ".$password."."; 
mail($email, $subject, $message, $headers); 

См. Подробности о mail() function.

Если это не сработает, попробуйте использовать PHPMailer. Вы настраиваете его в коде, нет необходимости редактировать php.ini.

Я использовал его в некоторых проектах (v 2.0.4, я вижу, что последнее - 5.1) и не было проблем.

+0

просто попробовал. Не работает. такая же ошибка. –

+0

Я сделал ошибку и отредактировал ответ. От адреса должен быть адрес, от которого вы отправляете сообщение. – talereader

+0

OK Я понял. Ну, я нашел что-то, что работает. Сначала я загрузил класс phpMailer и включил его в скрипт на самом верху, как это: require_once ("PHPMailer_5.2.1/class.phpmailer.php"); Далее я удалил другой SMTP, который использовал и загрузил другой, называемый PostCaster. Во время настройки он пытался сделать SMTP-приложение именем моего компьютера. Я просто изменил его после установки на «localhost». Наконец, я запустил скрипт. Письмо отправилось в postcaster, и я нажал «отправить» в post caster. –

0

Попробуйте использовать сервер Google для отправки почты, вы можете увидеть, как это сделать here

+1

Я бы попробовал, если бы xamp работал на моем компьютере. Я получал сообщение об ошибке, в котором говорилось что-то о том, что что-то уже было запущено, а порт 88 недоступен или что-то в этом роде. Поэтому я переключился на WAMP. –

0

Попробуйте использовать этот

//Email information 
$to = "[email protected]"; 
$subject = "Test mail"; 
$message = "Hello! This is a test email message."; 
$from = "[email protected]"; 
$headers = "From:" . $from; 

$mail=mail($to,$subject,$message,$headers); 
if($mail) { 
    echo "Thanks for mail"; 
} else { 
    echo "Mail not Sent"; 
} 

//Email response 
echo "Thank you for contacting us!"; 
Смежные вопросы