2016-04-20 15 views
0
私は機能と電子メールを送信するためにphpmailerのを使用してい

:私はレスポンスヘッダを設定し、このように私のPHPファイル内 phpmailerの応答

function send_email($address, $message){ 
$mail = new PHPMailer; 
$mail->SMTPDebug = 3; 
$mail->isSMTP(); 
$mail->Host = "smtp.gmail.com"; 
$mail->SMTPAuth = true; 
$mail->Username = "[email protected]"; 
$mail->Password = "password"; 
$mail->SMTPSecure = "tls"; 
$mail->Port = 587; 

$mail->From = "[email protected]"; 
$mail->FromName = "Name"; 
$mail->addAddress($address, "Cust. name"); 

$mail->isHTML(true); 

$mail->Subject = "Nueva clave"; 
$mail->Body = "<i>".$message."</i>"; 
$mail->AltBody = "This is yout password."; 

if($mail->send()) 
{ 
    return true; 
}else{ 
    return false; 
} 
} 

header('Content-Type: application/json');行われる必要があるプロセスの後、私が扱う電子メールこの方法:
if(send_email('[email protected]', $message)) 
     { 
      array_push($response, 'email sent'); 
      array_push($response, $new_password); 
      echo json_encode(array('errors'=>$errors, 'response' => $response)); 
     } 
     else 
     { 
      array_push($errors, 'email not send'); 
      array_push($errors, $new_password); 
      echo json_encode(array('errors'=>$errors, 'response' => $response)); 
     } 

は、通常、私のようなサーバからの応答が期待:オブジェクトを[エラーは[]、応答[]]と同じように何回かは、私は、しかし、代わりに私は答えとしてこれを受けよ、これを行っている JSON RESPONSE

なぜこの応答が得られるのですか?設定されていない他の設定が必要ですか。 ありがとう

+0

「メール送信済み」と新しいパスワードが生成されたためです。 – Naumov

+0

メールを送信しない場合は、送信元のメールボックス(またはリターンパス)を確認して、返されたメールをサーバーから読み取るようにしてください。 – Naumov

+0

のようなものですが、$ .ajax({ success:function(response){ } }の –

答えて

2

あなたの応答には有効なJSONではないデバッグ出力が含まれています。これをオフにするには、これをオフにしてください:

$mail->SMTPDebug = 0; 
+0

申し訳ありませんが、なぜjsonは有効ではありませんか? – Naumov

+0

ああ私はそれを気付かなかった、ありがとう、今は働いている。 –

+0

@Naumov - PHPMailerのデバッグ出力( "望ましい出力"ラベルより上に出力されたもの)はJSON形式ではなく、JSONが必要なものに送信されていたため、破損していました。 – Synchro