Php 警告:mail()[function.mail]:SMTP服务器响应:553我们不中继非本地邮件,抱歉

Php 警告:mail()[function.mail]:SMTP服务器响应:553我们不中继非本地邮件,抱歉,php,email,Php,Email,以下脚本使用mail函数发送电子邮件。但我无法发送电子邮件。单击“提交”后,将显示: Warning: mail() [function.mail]: SMTP server response: 553 We do not relay non-local mail, sorry. in E:\xampp\htdocs\feedback.php on line 19 mail sent successfully 脚本 <?php if( isset( $_REQUEST['email']

以下脚本使用
mail
函数发送电子邮件。但我无法发送电子邮件。单击“提交”后,将显示:

Warning: mail() [function.mail]: SMTP server response: 553 We do not relay non-local mail, sorry. in E:\xampp\htdocs\feedback.php on line 19
mail sent successfully
脚本

<?php 
if( isset( $_REQUEST['email'] ) ) {
    $email = $_REQUEST['email'];
    $subject = $_REQUEST['subject'];
    $message = $_REQUEST['message'];
    mail("me@gmail.com" , $subject , $message , "From:".$email );
    echo "mail sent successfully";
}  else {
     echo "<form method = 'post' action = 'feedback.php'>
     Email of sender : <input name = 'email' type = 'text' /> <br/>
     Subject : <input name = 'subject' type = 'text'/> <br/>
     Enter your feedback here : <textarea name = 'message' rows = 15 cols = 40 > </textarea> <br/>
     <input type = 'submit'/>
     </form>";
   }
?>

警告:mail()[function.mail]:SMTP服务器响应:553我们不中继非本地邮件,抱歉。在第19行的E:\xampp\htdocs\feedback.php中
邮件已成功发送

这意味着您的服务器未正确配置。它应该能够通过智能主机发送邮件,允许从您的系统进行中继。在真正的服务器上,这可能是在本地主机上运行的MTA

还要告诉我们为什么要写$subject,$message,即在mail参数中使用$sign,因为我们在上面声明了$email,$message等等。为什么我们不能只写信息,电子邮件。。没有美元符号

这是因为在PHP中变量的前缀是
$

下面的脚本使用邮件功能发送电子邮件。但我无法发送电子邮件。单击“提交”后,将显示:

SMTP服务器阻止在非本地计算机/域的情况下通过它发送邮件

这是为了防止垃圾邮件发送者使用SMTP服务器发送邮件。(开路继电器)

_还要告诉我们为什么要写$subject,$message,即在mail参数中使用$sign,因为我们在上面声明了$email,$message等等。为什么我们不能只写信息,电子邮件。。没有美元符号

您不必使用变量

mail('me@gmail.com' , 'subject', 'test', 'From: someone@example.com');
很好

你也可以这样做:

mail("me@gmail.com" , $_REQUEST['subject'] , $_REQUEST['message'] , "From:".$_REQUEST['email'] );

答案很简单:您的SMTP服务器不支持中继邮件。您可能需要对其进行配置或登录,以便中继工作。虽然我以前也做过类似的事情,但现在还不能提供任何样品。尝试搜索“PHP中的SMTP登录”

  • 您使用的是默认情况下Mercury附带的XAMPP,默认情况下Mercury未配置为将邮件发送到其他服务器。它基本上是用来调试的。但根据我的经验,Windows+Apache通常最好只作为调试环境

  • PHP变量前面都有$。这叫一个。这就是它们与常量、类定义和函数的区别。如果要分配一个值,然后将其发送到函数中,则需要使用变量。如果一个常量足够重要的话,你可以用它来设置它,但是相信我,这种情况很少见,你通常应该避免它们

  • 但是,您也可以这样做:

    mail("me@gmail.com" , 
          $_REQUEST['subject'] , 
          $_REQUEST['message'] , 
          "From:".$_REQUEST['email'] );
    

    此问题是由于您的服务器配置造成的。 现在,服务器停止开放式转发消息,我们在核心PHP中使用的发送邮件的方法是开放式转发方法。停止开放式转发可以减少垃圾邮件。 这就是您收到此错误消息的原因,请尝试使用类似swift mail的邮件库从SMTP发送邮件 在Xampp菜单中,
    转到mercury管理-->配置菜单-->MercuryS SMTP服务器-->连接控制。在该窗口中,删除复选框上的复选框。见下文:

    然后在php.ini文件中:

    [邮件功能]
    SMTP=127.0.0.1如果使用Windows+Xampp安装: 这是因为mercury服务已经在运行,无法在本地主机之外发送电子邮件。
    转到xammp控制面板并停止mercury服务。希望有帮助。

    这里有两个完全无关的问题。分段。对于第二个问题,即PHP中如何使用变量。如果他想使用用户以表单形式提交的数据,他会这样做。@PeeHaa:请修复第二部分。这可能会导致错误的想法。@Cem Kalyoncu:第二部分是什么?我刚换的那部分Peven将其托管到web服务器后,我无法接收电子邮件。原因可能是什么。即使将其托管到web服务器后,我也无法接收电子邮件。原因可能是什么。您是否确认您的服务器有邮件服务器?您是否将电子邮件发送到已知的电子邮件地址?当你仅仅调用
    $res=mail(,'subject','body');回音$res?”mail returned true':'mail returned false'?解决此问题的post指令链接已失效@cwallenpoole@Pie固定的。现在它引用了internet存档。即使将其托管到web服务器上,我也无法接收电子邮件。这可能是什么原因。