邮件()不起作用,有什么原因吗


Mail() not working, any ideas why?

大家好,我正在使用联系人表单中的mail(),但由于某种原因,它不起作用。

我设置的php编码如下:

            // sending email to sales@xxx.com
        $to      = "hello@xxx.com";
        $subject = 'Email From {$name} from your website';
        $message = "$name has contacted you from the website and says:
        $mcontent
        $name 's contact email address is: $email"; 
        $headers = $email . "'r'n";
        $headers .= "Reply-To: " . $email . "'r'n"; 
        $headers .= "Content-type: text/html; charset=iso-8859-1'r'n"; 
        mail($to, $subject, $message, $headers) or die ("Failure");
        // end of sending mail
        returnheader("/xxx/email-sent");  

我没有任何错误,它甚至会在完成后进入成功页面。

为什么这不起作用的想法。

我已经检查了您的代码,它在我的服务器上运行良好,我收到了电子邮件。在这里,您的SMTP服务器设置似乎有问题。PHP脚本没有任何问题。你可以在这里找到你的解决方案。php.ini和;SMTP=-如何传递用户名&密码

同样在windows环境中,http://www.ruhanirabin.com/php-sendmail-setup-with-smtp-iis-and-windows-servers/

  • 如果您在WIndows上,请确保您的php.ini
  • 如果你是Unix,请确保MTA正在运行:如果它(至少部分)已安装但未运行,你会得到确切的效果

编辑

如果你的MTA没有运行,而你启动了它,那么用PHP发送的邮件就会发出!他们排队等候,但没有处理。

这可能与邮件设置有关。你有邮件服务器在机器上运行吗?检查php.ini中的sendmail/smtp_server设置。

mail()使用sendmail,默认情况下:sendmail -t -i

如果邮件已被接受,则返回TRUE,而不是已发送:

返回值

如果邮件已成功接受传递,则返回TRUE,否则返回FALSE。

需要注意的是,仅仅因为邮件已被接受交付,并不意味着邮件将真正到达预期目的地。

我建议使用http://swiftmailer.org/使用SMTP而不是CCD_ 5。

如果$email只是一个电子邮件地址,则$headers的第一行无效。大概你会想要这样的东西:

$headers = "Cc: " . $email . "'r'n";

$headers = "From: " . $email . "'r'n";

原因可能是,例如,您没有设置邮件服务器,或者没有配置防火墙(如果有)。

在变量$subject 中应该使用双引号而不是单引号

$subject = "Email From {$name} from your website";