PHP邮件功能404错误

时间:2017-11-14 22:50:22

标签: php email

HTML代码:

    <html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>BuddyTeam | Website</title>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    <link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
    <div id="page-wrap">
        <img src="images/title.png" alt="BuddyTeam | Website" /><br /><br />

        <div id="contact-area">

            <form method="post" action="contactengine.php">
                <p style="text-align:right" onclick="alert('Só podes registar uma conta secundária se tiveres uma principal!        Neste espaço escreve o Nickname da tua conta registada no Servidor.')"><font color="blue">Precisas de ajuda? Clica Aqui!</font></p>
                <label for="Nickname"></label>
                <p><font face="serif"></font></p><input type="text" name="Nickname" id="Nickname" placeholder="Informa o Nickname da conta principal registada no Servidor." required />
                <p style="text-align:right" onclick="alert('Para não haver fraudes precisamos de saber que és mesmo tu!                   Vai ao Servidor com a tua conta registada, usa o comando ( /meuid ) e escreve os números neste espaço.')"><font color="blue">Precisas de ajuda? Clica Aqui!</font></p>

                <label for="ID"></label>
                <p><font face="serif"></font></p><input type="text" name="ID" id="ID" placeholder="Informa o ID da conta principal registada no Servidor." required />
                <p style="text-align:right" onclick="alert('Contas nunca são demais!                                                                        Neste espaço escreve o Nickname da nova conta que queres registar.')"><font color="blue">Precisas de ajuda? Clica Aqui!</font></p>

                <label for="Novo"></label>
                <input type="text" name="Novo" id="Novo" placeholder="Informa o Nickname da conta que pretendes registar." required />
                <p style="text-align:right" onclick="alert('Segurança em primeiro lugar!                                                                  Neste espaço escreve uma senha para a nova conta que queres registar.')"><font color="blue">Precisas de ajuda? Clica Aqui!</font></p> 

                <label for="Senha"></label>
                <input type="text" name="Senha" id="Senha" placeholder="Informa uma senha para a tua nova conta." required />   
                <p style="text-align:right" onclick="alert('Depois entra em contacto!                                                                      Coloca aqui o teu Email para seres contacto quando a conta for registada.')"><font color="blue">Precisas de ajuda? Clica Aqui!</font></p>    

                <label for="Email"></label>
                <input type="text" name="Email" id="Email" placeholder="Informa um Email para contacto.">

                <input type="submit" name="submit" value="Enviar" class="submit-button" />
            </form>

            <div style="clear: both;"></div>

        </div>

    </div>
</body>
</html>

PHP代码:

    <?php

$EmailFrom = "geral@buddyplays.net";
$EmailTo = "geral@buddyplays.net";
$Subject = "Novo Pedido de Registo de Conta";
$Nickname = Trim(stripslashes($_POST['Nickname']));
$ID = Trim(stripslashes($_POST['ID'])); 
$Novo = Trim(stripslashes($_POST['Novo'])); 
$Senha = Trim(stripslashes($_POST['Senha'])); 
$Email = Trim(stripslashes($_POST['Email'])); 

// validation
$validationOK=true;
if (!$validationOK) {
  print "<meta http-equiv=\"refresh\" content=\"0;URL=erro.html\">";
  exit;
}

// prepare email body text
$Body = "";
$Body .= "Conta Registada: ";
$Body .= $Nickname;
$Body .= "\n";
$Body .= "ID da Conta Registada: ";
$Body .= $ID;
$Body .= "\n";
$Body .= "Nova Conta: ";
$Body .= $Novo;
$Body .= "\n";
$Body .= "Senha: ";
$Body .= $Senha;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page 
if ($success){
  print "<meta http-equiv=\"refresh\" content=\"0;URL=concluido.php\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=erro.html\">";
}
?>

当我填写表单并提交时,我已重定向到&#34; erro.html&#34;并且不发送电子邮件。有什么问题?

系统在不进行任何编辑的情况下从一个时刻停止工作。

我需要更改什么才能使系统再次运行?

1 个答案:

答案 0 :(得分:0)

问题是您的mail()功能无效,因为您提供了无效的第四个参数(作为From地址)。 "From: <$EmailFrom>"不应在电子邮件地址周围加上括号。如果您确实使用了括号,则需要在前面中提供名称。

而不是$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

您要做的是将其添加为标题:

$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'From: ' . $Nickname. ' <' . $EmailFrom . '>';
$success = mail($EmailTo, $Subject, $Body, $headers);`

这将评估为:From: $Nickname <$EmailFrom>

另请注意,某些邮件服务器会阻止From地址被操纵以防止网上诱骗。

您只是因为服务器上不存在erro.html而获得404。创建相关文件将解决错误,并在发送电子邮件时发生错误时自动将其重定向到那里。

希望这有帮助! :)