2017-11-14 2 views
0

HTML-Code:PHP Mail-Funktion 404 Fehler

<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-Code:

<?php 

$EmailFrom = "[email protected]"; 
$EmailTo = "[email protected]"; 
$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\">"; 
} 
?> 

Wenn ich das Formular ausfüllen und absenden, ich bin auf „erro.html umgeleitet "und die E-Mail wird nicht gesendet. Was ist falsch?

Das System funktioniert nicht mehr von einem Moment zum anderen, ohne dass ich irgendwelche Bearbeitungen vorgenommen habe.

Was muss ich ändern, damit das System wieder funktioniert?

+0

Die PHP ist Ihr ganzer Code oder eine minimale Version? Wird die Umleitung von 'if ($ success) {' oder 'if (! $ ValidationOK) {'? (Auch warum Redirect mit HTML/Meta, verwenden Sie einfach 'header') – chris85

+0

Was ist der Speicherort von' contactengine.php'? –

Antwort

0

Das Problem ist, dass Ihre mail() Funktion nicht funktioniert, weil Sie einen ungültigen vierten Parameter (als Ihre From Adresse) angegeben haben. "From: <$EmailFrom>" sollte nicht die Klammern um die E-Mail-Adresse haben. Wenn Sie die Klammern verwenden, müssen Sie einen Namen in Front von ihnen angeben.

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

Was Sie suchen ist zu tun, fügen Sie es als Überschrift: From: $Nickname <$EmailFrom>:

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

Dies wird zu bewerten.

Beachten Sie auch, dass einige Mail-Server verhindern, dass die Adresse From manipuliert wird, um Phishing zu verhindern.

Sie erhalten einen 404, weil erro.html nicht auf Ihrem Server vorhanden ist. Durch das Erstellen der relevanten Datei wird der Fehler behoben und Sie automatisch dorthin weitergeleitet, wenn beim Senden der E-Mail ein Fehler auftritt.

Hoffe, das hilft! :)