0

こんにちは、私は ajax を使用して連絡先フォームでメールを送信し、値を test.php という名前の php ファイルに渡します。すべて正常に動作しています。

test.php のコード

if(mail($to,$subject,$message,$headers))
     {

        echo "mail sent";

     }
     else
     {
        echo "no mail sent";
     } 

メールが送信されたときにAjaxが正常に動作し、メールmail sentが送信されていないときにメッセージが表示されますno mail sent。しかし、それだけではわかりません。エラーコードがたくさん表示されます

<br />
<font size='1'><table class='xdebug-error xe-warning' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Warning: mail(): SMTP server response: 551 User not local. We don't relay in E:\wamp1\wamp\www \test.php on line <i>42</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0007</td><td bgcolor='#eeeeec' align='right'>275552</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='E:\wamp1\wamp\www\wp_twentythirteen\wp-admin\admin-ajax.php' bgcolor='#eeeeec'>..\admin-ajax.php<b>:</b>0</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.2273</td><td bgcolor='#eeeeec' align='right'>20765536</td><td bgcolor='#eeeeec'>do_action(  )</td><td title='E:\wamp1\wamp\www\wp_twentythirteen\wp-admin\admin-ajax.php' bgcolor='#eeeeec'>..\admin-ajax.php<b>:</b>72</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>0.2273</td><td bgcolor='#eeeeec' align='right'>20767104</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.call-user-func-array' target='_new'>call_user_func_array</a>
(  )</td><td title='E:\wamp1\wamp\www\wp_twentythirteen\wp-includes\plugin.php' bgcolor='#eeeeec'>..\plugin.php<b>:</b>406</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>4</td><td bgcolor='#eeeeec' align='center'>0.2273</td><td bgcolor='#eeeeec' align='right'>20767136</td><td bgcolor='#eeeeec'>contact_ajax(  )</td><td title='E:\wamp1\wamp\www\wp_twentythirteen\wp-includes\plugin.php' bgcolor='#eeeeec'>..\plugin.php<b>:</b>406</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>5</td><td bgcolor='#eeeeec' align='center'>0.2273</td><td bgcolor='#eeeeec' align='right'>20767312</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.mail' target='_new'>mail</a>
(  )</td><td title='E:\wamp1\wamp\www \test.php' bgcolor='#eeeeec'>..\test.php<b>:</b>42</td></tr>
</table></font>
"no mail sent"

最後の行でこのno mail sentメッセージが表示されます。なぜこれらが起こっているのですか.私はメッセージだけでメールを送信したくありません. 誰か助けてくれませんか

4

4 に答える 4

2

はい、ユーザーはメールの送信を許可されていないようです。エラーを正しく読むと、同じことがわかります。

Warning: mail(): SMTP server response: 551 User not local. We don't relay in E:\wamp1\wamp\www \test.php on line 42

この投稿 @ http://www.webmaster-talk.com/php-forum/60248-smtp-server-response-551-a.htmlを読んでください 。

また、多くの人が提案しているようにメール機能の前に「@」を追加すると、警告が無視されるだけです。メールサーバーが正しく設定されていないと、メール機能が動作しません。

于 2013-09-07T06:00:23.077 に答える
0

@フロントメール機能を使用してそのエラーメッセージを非表示にします。

if (@mail($to, $subject, $message, $headers))

于 2013-09-07T05:58:17.747 に答える
0

かなりtryとそれを試してみてくださいcatch

try {
    mail($to,$subject,$message,$headers);
    echo "mail sent";
} catch (Exception $e) {
    $error =  'Caught exception: '.  $e->getMessage();
    error_log($error);
    echo "no mail sent";
}
于 2013-09-07T06:17:21.260 に答える
0

localhost (コンピュータ) にいて、このスクリプトを開発している場合は、メール サーバーをセットアップするか、スクリプトの mail() のラッパーとしてデバッグ メール関数を使用できます。関数はメールと同じ引数をすべて受け入れます。 () ですが、実際には mail() を呼び出しません (代わりに、画面やテキスト ファイルなどに情報を出力できます)。

次に、システムをオンラインにする準備ができたら、関数を変更して mail() を呼び出すことができます。

メール サーバーには、SMTP 認証用のユーザー ログインとパスワードが必要です。

つまり、デフォルトで動作する構成 (またはそのような構成を取得する手順) を提供する必要があるため、Web ホストに連絡する必要があります。

または、PEAR を使用して問題を解決することもできます。

于 2013-09-07T06:31:14.727 に答える