PHP邮件()-服务器错误


PHP mail() - server error

我正在尝试使用一个简单的PHP mail()函数从网站创建用户反馈。我使用W3中的"PHP安全电子邮件"示例脚本作为基础。由于电子邮件的性质,不需要增加安全性,也不需要使用与此主题相关的其他帖子中建议的一些库,例如swift mailer。

当加载基本表单并选择"发送邮件"按钮时,我会收到一条"服务器错误"消息和以下支持信息:

"网站在检索时遇到错误http://www.examplewebsite/formsuccessful.php?forename=Joe&姓=博客&电子邮件=j.oe.blogs%40example.co.uk&subject=TEST+2&message=测试+内容它可能已停机进行维护或配置不正确。"

文件"formsuccess.php"肯定在服务器上的正确文件夹中——除非我忽略了另一个设置来启用这种类型的php脚本?

我已经包含了下面的表单和PHP代码,以防出现错误。

我当然会感谢你的帮助,我在这所房子里跳舞过,很多次我再也看不到树上的木头了。

干杯。

PHP:

<?php
function spamcheck($field)
  {
  $field1=filter_var($field, FILTER_SANITIZE_EMAIL);
  if(filter_var($field1, FILTER_VALIDATE_EMAIL))
    {
    return TRUE;
    }
  else
    {
    return FALSE;
    }
  }
if (isset($_REQUEST['email']))
  {
  $mail = $_REQUEST['email'];
  $mailcheck = spamcheck($mail);
  if ($mailcheck==FALSE)
    {
    echo "Invalid input";
    }
  else
    {
    $email = $_REQUEST['email'] ;
    $subject = $_REQUEST['subject'] ;
    $message = $_REQUEST['message'] ;
    $name = $_REQUEST['forename']." ".$_REQUEST['surname'];
    mail("admin@examplewebsite.com", "Subject: "$subject,
    "Message: "$message, "From: "$email," ",$name );
    }
  }
else{
    //reload page with message highlighting error
    }
?>

HTML表单:

<form method="REQUEST" action="formsuccessful.php">
            <fieldset class="master">
            <legend class="master" style="text-align:left;"><b><u>Personal     Details:</u></b></legend>
                <ol class="master">
                    <li class="master"><label class="master"     for"forname">Forename<em class="master">*</em></label><input class="left" type="text"     name="forename" size="30" /></li>
                <li class="master"><label class="master" for"surname">Surname<em class="master">*</em></label><input type="text" name="surname" size="30" /></li>
                <li class="master"><label class="master" for"email">Your Email<em class="master">*</em></label><input type="text" name="email" size="30" /></li>
            </ol>
        <legend class="master" style="text-align: left;"><b><u>Email Contents:</u></b></legend>
            <ol class="master">
                <li class="master"><label class="master" for="subject">Subject:<em class="master">*</em></label><input type="text" name="subject" size="30" /></li>
                <li class="master"><label class="master" for="message">Content:<em class="master">*</em></label><textarea cols="50%" rows="20" onkeyup="checkContent()" name="message" id="message"></textarea></li>
                <li class="master"><input type="submit" value="Send Email" /></li></ol>
        </fieldset>
    </form>

随时准备向我指出明显的犯罪行为。

这里似乎有一些错误:

mail("admin@examplewebsite.com", "Subject: "$subject,
  "Message: "$message, "From: "$email," ",$name );

如果你想连接,你需要使用这样的东西:

mail("admin@examplewebsite.com", "Subject: " . $subject,
  "Message: " . $message, "From: " . $email);

您还有一个参数太多了,我不确定您想对最后一个部分," ", $name做什么,但这不是最后一个参数的有效输入,请参阅mail的手册。

您的表单使用的方法"REQUEST"不正确,应该是GET或POST。另一方面,除了@jeroen已经指出的mail函数之外,您使用的php代码似乎是正确的。

将表单方法更改为"post"

此外,我认为这不会有什么不同,但在表单操作中使用完整的URL。

即:form method="POST"action="http://www.example.com/path/to/file/formsuccessful.php"