2012-03-10 46 views
0

ユーザーが電子メールアドレスを入力し、スクリプトがその電子メールに関連付けられたパスワードを検出する「パスワードを忘れた」ページを作成しています。保存した電子メールアドレスに送信します。警告:メール()[function.mail]:SMTPサーバーの応答:550無効な受信者:

私の問題は私のSMTP Mailserverと関係があります。私は無料のものをダウンロードしたので、1つ持っていない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."; 
    } 

を$ msgある出力正しくので、私はコードがメール機能を通過している知っています。

+0

を使用してみてください、私は '$ email'変数が空である賭けます。 –

+0

var_dump変数を使用して、変数が最初のものかどうかを確認します。もしそうなら、おそらくあなたのSMTP設定に問題があるでしょう。その場合、serverfaultに投稿したいかもしれません。 – j08691

+0

'は空ではありません。 2番目のif文の$ msg変数が出力されています。これは$ 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); 

​​の詳細を参照してください。

これで解決しない場合は、PHPMailerを試してみてください。コードで設定し、php.iniを編集する必要はありません。

私はこれをいくつかのプロジェクトで使用しました(2.0.4、最新版は5.1です)、問題はありませんでした。

+0

はそれを試しました。うまくいきませんでした。同じエラー。 –

+0

私は間違いを犯して答えを編集しました。送信元アドレスは、電子メールを送信しているアドレスでなければなりません。 – talereader

+0

私はそれを理解しました。 まあ、私は動作するものを見つけました。 最初に私はphpMailerクラスをダウンロードし、これを一番上のスクリプトに含めました:require_once( "PHPMailer_5.2.1/class.phpmailer.php"); 次は、使用していた他のSMTPを削除し、PostCasterという別のSMTPをダウンロードしました。 セットアップ中に、SMTPのものを自分のコンピュータの名前にしようとしました。私はセットアップ後に 'localhost'に変更しました。 最後に、スクリプトを実行しました。電子メールはポストキャスターに入り、ポストキャスターで「送信」します。 –

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!"; 
関連する問題