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

如果您在本地主机(您的计算机)上并且您正在开发此脚本,您可以设置邮件服务器或使用调试邮件函数作为脚本的 mail() 的包装器,其中该函数接受与邮件相同的所有参数() 但实际上并不调用 mail() (相反,它可以将信息打印到屏幕或文本文件中)。

然后,当你准备好让系统上线时,你可以修改函数调用mail()。

邮件服务器需要用户登录名和密码才能进行 SMTP 身份验证。

这意味着您应该联系您的虚拟主机,因为他们应该默认提供工作配置(或获取此类配置的说明)。

或者,您可以使用 PEAR 来解决您的问题。

于 2013-09-07T06:31:14.727 回答