【问题标题】:PHP Contact Form returning Error Message [duplicate]PHP联系表单返回错误消息[重复]
【发布时间】:2015-06-08 18:48:13
【问题描述】:

我在 2 个不同的服务器上有这些完全相同的 PHP 联系表单代码。 1 按预期工作,但另一个正在返回错误消息而不是成功消息。此外,电子邮件不会发送给我。

contact.php代码如下:

<?php
ob_start();
 if(isset($_POST['submit']))
 {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $query = $_POST['message'];
    $email_from = $name.'<'.$email.'>';

 $to="email@gmail.com";
 $subject="Enquiry";
// $headers  = 'MIME-Version: 1.0' . "\r\n";
 //$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
 $headers .= "From: ".$email_from."\r\n";
 $message="    
Name:
$name      
Email:
$email     
Message:
$query
";
    if(mail($to,$subject,$message,$headers))
        header("Location: http://www.website.com/contact.php?msg=Successful Submission! Thank you for contacting us."); 
    else
        header("Location: http://www.website.com/contact.php?msg=Error Sending Email!");
 }
?>

我想知道这是否是权限/服务器问题? 任何帮助将不胜感激!谢谢!

【问题讨论】:

    标签: php html forms email contact


    【解决方案1】:

    您的代码构造是正确的,并且返回值(这是您的自定义错误)可能是正确的“如果”邮件功能失败。

    很多时候我们发现 php mail() 函数不起作用。在某些情况下,即使函数返回 true,也不会发送电子邮件。以下是您在调试时可能会检查的要点:

    1. 首先检查 sendmail_path 变量是否设置正确。你可以 从页面中的 echo – ing phpinfo() 中看到它。典型值为 /usr/sbin/sendmail -t -i
    2. 如果您在第 4 个参数中发送额外的标头 功能,尝试将其删除并发送。这是一个非常常见的场景 邮件功能中的标题不正确。
    3. 检查您的服务器中是否安装了垃圾邮件过滤器 阻止您的电子邮件。

    如果您有权访问,请检查您的邮件日志文件,以查看电子邮件是否被邮件服务器阻止或尚未到达服务器。如果日志中没有您的电子邮件条目,则表示您的 php 代码或 php 配置有问题。如果它在日志中,您可以看到它未交付的原因。 邮件日志文件的典型路径是 /var/log/maillog

    【讨论】:

    • sendmail_path 显示为“无价值”...这是主要问题吗?
    • @梅尔瓦卢斯Where the sendmail program can be found, usually /usr/sbin/sendmail or /usr/lib/sendmail. configure does an honest attempt of locating this one for you and set a default, but if it fails, you can set it here.php.net/manual/en/mail.configuration.php。如果未设置,您的邮件将永远无法发送
    • 感谢您隔离问题。我不确定从哪里真正开始设置。 =0 首先 sendmail_path = no value 是什么意思?天哪。再次感谢您抽出时间回答我的问题!
    • 要配置您必须有权访问 php 配置文件,您可以在其中手动设置它,查找 sendmail_path = ""(它可能被注释掉)并将其设置为 sendmail_path = "sendmail -t -i" 或者,以下完整路径也可以工作 /usr/sbin/sendmail -t -i, , /usr/bin/sendmail -t -i。我建议您尝试每种方法,看看哪种方法适合您。如果您无权访问 php.ini 配置文件,则必须联系您的网络主机让他们为您设置。
    • 谢谢!会这样做。只是想知道这是否是我没有正确完成的事情。届时将相应联络!感谢帮助! :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    相关资源
    最近更新 更多