PHP mail()不工作请帮助我

时间:2013-01-26 07:33:52

标签: php

有人可以帮我弄清楚为什么这不发送?我是PHP的新手。

这是我网站上的联系表格。我从我的服务器(不是localhost)发送并收到控制台消息“Mail not sent”

<?php

include 'ChromePhp.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST'){

   $to = 'me@myemail.com';
   $subject = 'Email from Me';
   $message = $_POST['email'];

     if(mail($to, $subject, $message)){
        ChromePHP::log( 'Mail Sent');
     }else{
        ChromePHP::log( 'Mail Not Sent');
     }
}

?>

我之前已经意识到这个问题,但我找不到有效的答案。提前谢谢!

4 个答案:

答案 0 :(得分:2)

您应该在mail()函数中包含标题,例如

$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

然后将$ headers参数插入mail()函数:

mail($to, $subject, $message, $headers);

答案 1 :(得分:1)

没有错误信息,我只能猜测。您可能需要在php.ini中设置SMPT服务器。您可以使用ini_set('SMTP','your_server_here')在运行时执行此操作。

有关此处邮件配置的详情:http://php.net/manual/en/mail.configuration.php

如果您没有,可以检查您的ISP是否有开放服务器。 ISP有时会打开SMTP服务器(外发服务器),您可以通过查找有关如何设置邮件程序(Outlook)的说明来查找它们。

但要小心,除了光线测试外,不要使用它。我可以想象他们不会喜欢很多垃圾邮件通过他们的服务器。

编辑:另外,请阅读所需的标题。我看到你错过了一个From标题,这会导致警告。见这里:http://php.net/manual/en/function.mail.php

When sending mail, the mail must contain a From header. This can be set with the additional_headers parameter, or a default can be set in php.ini.

Failing to do this will result in an error message similar to Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. The From header sets also Return-Path under Windows.

答案 2 :(得分:0)

您应该检查您的邮件服务,因为上面的PHP代码非常正确。

答案 3 :(得分:0)

您可以要求您的托管服务提供商激活邮件服务,因为某些托管服务提供商不允许默认使用邮件。