Ae pessoal, estou precisando de ajuda urgente. Fiz um formulário em meu site ( http://www.willianwebsites.com/contato.html) e um arquivo envia.php, conforme segue abaixo: contato.html <form method="POST" action="envia.php"> <!--Caso queira permitir o preenchimento do email de destino descomente a linha abaixo--> Seu email:<br /><input type="text" name="email_de"><br /><br /> Assunto:<br><input type="text" name="assunto"><br><br> Mensagem:<br /> <textarea name="mensagem" rows="10" cols="60" lines="20"></textarea><br /> <input type="submit" name="send" value="Enviar"> </form> envia.php <?php //PROTEÇÃO ANTES DE ENVIAR //Verifica se os campos mensagem, email_de e assunto do formulário estão preenchidos if (empty($_POST['mensagem'])|| empty($_POST['email_de'])|| empty($_POST['assunto'])) { //Não tem mensagem vindo pelo formulário, não manda nada e redireciona para o formulario.html header("Location: emailnaoenviado.html"); } else { //Verificação antes do envio; //ESTA FUNÇÃO SERVE PARA VERIFICAR A CONSISTÊNCIA DE UM ENDEREÇO DE EMAIL $emailPattern = '/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i'; if (!preg_match($emailPattern, $_POST['email_de'])) { echo "<meta HTTP-EQUIV=Refresh' CONTENT='0;URL=errodeemail.html'>"; } else { //Aqui você pode definir para quem vai o email $to="contato@willianwebsites.com"; //$to = $_POST['email_para]; $from=$_POST['email_de']; // Envia o email : if (mail($to,$_POST['assunto'],$_POST['mensagem'],"From: $from\n")) { // Mostra confirmação de email enviado com sucesso. echo "<meta HTTP-EQUIV=Refresh' CONTENT='0;URL=emailenviado.html'>"; //Destroi as variáveis unset ($_POST['email_de]); unset ($_POST['assunto']); unset ($_POST['mensagem']); } else { // Envio falhou echo "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=emailnaoenviado.html'>"; } } } ?> Ele até funciona, porém ele da erro se o e-mail preenchido for gmail, yahoo... dependendo ele dá erro. Alguém poderia me ajudar e dizer porque?