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

时间:2011-07-24 20:10:17

标签: php email

以下脚本使用mail函数发送电子邮件。但是我无法发送电子邮件。点击submit后会显示:

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

SCRIPT

<?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>";
   }
?>

我使用Apache作为php服务器

还要说明为什么我们必须在邮件参数中写$subject$message$符号,因为我们已声明$email,{{ 1}}等等,就在上面。为什么我们不能只写消息,电子邮件,没有美元符号?

7 个答案:

答案 0 :(得分:10)

Resolvendo: 在Xampp菜单中,
转到水银管理员 - &gt;配置菜单 - &gt; MercuryS SMTP服务器 - &gt;连接控制。在该窗口中,取消选中复选框。见下文:

enter image description here

然后在php.ini文件中:

[邮件功能] SMTP = 127.0.0.1&lt; ------------------将localhost更改为ip local

SMTP_PORT = 25

答案 1 :(得分:5)

  

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

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

  

还要说明为什么我们必须写一个$ subject,$ message,即邮件参数中的$ sign,因为我们已经在上面声明了$ email,$ message等。为什么我们不能只写消息,电子邮件,......没有美元符号?

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

答案 2 :(得分:4)

  1. 您正在使用默认情况下附带Mercury的XAMPP,默认情况下,Mercury未配置为将邮件发送到其他服务器。它基本上用于调试。 Instructions do exist将其配置为执行此操作,但Windows + Apache通常最适合作为我的体验调试环境。

  2. PHP变量都有$ before。它被称为sigil。它是区别于常量,类定义和函数的区别。如果要分配值然后将其发送到函数,则需要使用变量。你可以使用define设置一个常数,如果它足够重要,但请相信我,这些情况很少见,你通常应该避免它们。

  3. 你也可以这样做:

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

答案 3 :(得分:1)

  

以下脚本使用邮件功能发送电子邮件。但是我无法发送电子邮件。点击提交后会显示:

SMTP服务器阻止在不从本地计算机/域发送邮件时使用。

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

  

_也告诉我们为什么要写$ subject,$ message,即邮件参数中的$ sign,因为我们已经在上面声明了$ email,$ message等。为什么我们只能在没有美元符号_?

的情况下编写邮件,电子邮件......

<击> 您不必使用变量。

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

完全没问题

你也可以做到:

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

答案 4 :(得分:0)

此问题是由于您的服务器配置造成的。 现在一天服务器停止打开中继我们在核心PHP中使用的消息和方法用于发送邮件是一种开放的中继方法。打开开放中继可以减少垃圾邮件。 这是你得到这个错误信息的共鸣,尝试邮寄图书馆像swift邮件从SMTP发送邮件

答案 5 :(得分:0)

如果使用Windows + Xampp安装: 这是因为水银服务已在运行,并且无法在本地主机之外发送电子邮件。 转到xammp控制面板并停止水银维修。希望对您有所帮助。

答案 6 :(得分:-1)

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