邮件()不工作,任何想法为什么?

时间:2012-02-14 12:02:56

标签: php email function

大家好,我正在使用联系表单中的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");  

我完全没有错误,甚至在完成后也会进入成功页面。

任何想法,为什么这不起作用。

7 个答案:

答案 0 :(得分:2)

我检查了你的代码,它在我的服务器上工作正常,我收到了电子邮件。 在这里,您的SMTP服务器设置看起来有些问题。 您的PHP脚本没有任何问题。 你可以在这里找到你的解决方案 php.ini & SMTP= - how do you pass username & password

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

答案 1 :(得分:1)

  • 如果您使用的是WIndows,请确保您的服务器中有SMTP服务器 的php.ini
  • 如果您不是Unix,请确保MTA正在运行:如果(至少部分)已安装但未运行,您将获得此效果

修改

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

默认情况下,

mail()使用sendmailsendmail -t -i

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

  

返回值

     

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

     

重要的是要注意,仅仅因为邮件已被接受发送,并不意味着邮件实际上会到达目的地。

我建议将http://swiftmailer.org/与SMTP一起使用,而不是mail()

答案 4 :(得分:0)

您应该在变量$subject

中使用双引号而不是单引号
$subject = "Email From {$name} from your website";

答案 5 :(得分:0)

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

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

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

答案 6 :(得分:0)

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