INEM 0 Denunciar post Postado Setembro 14, 2010 Olá pessoal, Eu estou com uma dificuldade em um formulário que estou a criar para testes. O problema é que o formulário é enviado para o meu email como defini, mas os campos de nome, assunto, email e mensagem que eu defini no documento html de formulário não são enviados....já alterei o código várias vezes mas não estou a conseguir, será que alguém me consegue ajudar a retificar o código? Ficheiro formulario.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>formulário</title> </head> <body> <form name="formulario" method"POST" action="enviar.php"> <label>Nome: <input name="nome" type="text" id="nome" size="60"/> <!--Variavel nome--><p> </label> <label>Email: <input name="email" type="text" id="email" size="62"/> <!--Variável email--><p> </label> <label>Assunto: <input name="assunto" type="text" id="assunto" size="58"/> <!--Variavel assunto--><p> </label> <label>Mensagem:><br /> <textarea name="mensagem" id="mensagem" cols="50" rows="10"></textarea> <!--Variavel mensagem--> </label> <p> <input type="submit" name="enviar" value="Enviar" /> <input type="reset" name="limpar" value="Limpar" /> </form> <hr noshade> </body> </html> ficheiro enviar.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>enviar.php</title> </head> <body> <?php $email_destino = "inem@live.ie"; $nome = $_POST['nome']; $email = $_POST['email']; $assunto = $_POST['assunto']; $mensagem = $_POST['mensagem']; if (mail($email_destino,$assunto,$mensagem,$nome,$email)){ echo "O seu email foi enviado com sucesso, obrigado!"; }else{ echo "O seu email não foi enviado, por favor reenvie de novo!"; } ?> </body> </html> Nota: Eu não pretendo formulários feitos ou algo do género, o meu objectivo é mesmo aprender e não pegar receitas feitas de bolo...Vou deixar o código para verem! abraços INEM Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Setembro 15, 2010 Bom, em primeiro lugar você precisa informar ao destinatário que tipo de dados estão sendo enviados. Estes são os chamados headers das aplicações. Vou te dar um exemplo da PHP.NET: <?php $to = 'nobody@example.com'; $subject = 'the subject'; $message = 'hello'; $headers = 'From: webmaster@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); ?> Está vendo os headers? From, Reply-To, X-Mailer. Existe ainda Content-Type, Bcc, e outros. Além disso, a sintaxe geralmente ocupará apenas estes quatro parâmetros. Sua função mail possui "$nome,$email" ao invés dos headers. Mais dicas valiosas: 1 - Rode este script em um servidor configurado, e não em seu próprio computador. Geralmente configuração interna de email para PHP caseira é complicada de ser instalada. 2 - Utilize como remetente do e-mail um endereço que faça parte do domínio que você pertence. Se seu site é www.site.com, utilize email@site.com, dessa forma é bem menos provável de ocorrer de seu e-mail ser bloqueado por políticas anti-spam. Até mais. Compartilhar este post Link para o post Compartilhar em outros sites
INEM 0 Denunciar post Postado Setembro 15, 2010 Olá, Obrigado desde já pela resposta, já corrigi as variáveis a mais na função mail() e acrescentei o $headers, mas continuo sem conseguir pegar o que se escreve na mensagem no formulário html, que eu defini com a variável $mensagem no php. Como tornar isso possível? Pois a minha grande dúvida é como pegar as variáveis no html para o php....aparentemente está tudo correcto mas não funciona, o código está assim agora: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <?php $email_destino = "inem@live.ie"; $assunto = "Teste de Formulário"; $mensagem = $_POST['mensagem']; $headers = 'From: webmaster@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); if (mail($email_destino,$assunto,$mensagem,$headers)){ echo "O seu email foi enviado com sucesso, obrigado!"; }else{ echo "O seu email não foi enviado, por favor reenvie de novo!"; } ?> </body> </html> abraços INEM Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Setembro 15, 2010 Altere a header 'From: webmaster@example.com' para um e-mail que seja pertencente ao seu domínio como expliquei no post anterior. O resto está aparentemente correto. $mensagem = $_POST['mensagem']; Dessa forma é possível pegar os valores dos campos do formulário. name="VALOR" ==> $var = $_POST['VALOR']; O id não é necessário nos campos, mas não farão diferença em seu funcionamento, ao menos que utilize javascript. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Setembro 15, 2010 cara.. crie uma string antes de enviar para a função mail() vendo o primeiro código: $nome = $_POST['nome']; $email = $_POST['email']; $assunto = $_POST['assunto']; $mensagem = $_POST['mensagem']; basta você fazer algo como: $msg = '<strong>Nome:</strong> '.$_POST['nome'].'<br />'. '<strong>Email:</strong> '.$_POST['email'].'<br />'. '<strong>Assunto:</strong> '.$_POST['assunto'].'<br />'. '<strong>Mensagem:</strong> '.$_POST['mensagem']; e então: $headers = 'MIME-Version: 1.0'. "\r\n" . 'Content-type: text/html; charset=iso-8859-1 \r\n'. "\r\n" . 'From: webmaster@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail( $email_destino, $assunto, $msg, $headers ) Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Setembro 15, 2010 Apenas complementando a mensagem do William. $headers = 'MIME-Version: 1.0'. "\r\n" . 'Content-type:text/html; charset=utf-8' . "\r\n" . 'From: webmaster@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion();Dessa forma os headers ficam mais corretos. O charset UTF-8 é sempre melhor de ser utilizado, principalmente no envio de e-mails. Compartilhar este post Link para o post Compartilhar em outros sites
INEM 0 Denunciar post Postado Setembro 15, 2010 Olá pessoal, Desde já obrigado pela ajuda, já percebi que faltava uma variável para pegar as outras todas a $msg, mas mesmo assim agora aparece o email em branco só com a variável $msg: Nome: Email: Assunto: Mensagem: Mas com os campos em branco ainda, nada é preenchido do que se escreve no formulário. Vou deixar de novo os 2 códigos!! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <form name="formulario" method"POST" action="enviar.php"> <label>Nome: <input name="nome" type="text" id="nome" size="60"/> <!--Variavel nome--><p> </label> <label>Email: <input name="email" type="text" id="email" size="62"/> <!--Variável email--><p> </label> <label>Assunto: <input name="assunto" type="text" id="assunto" size="58"/> <!--Variavel assunto--><p> </label> <label>Mensagem:><br /> <textarea name="mensagem" id="mensagem" cols="50" rows="10"></textarea> <!--Variavel mensagem--> </label> <p> <input type="submit" name="enviar" value="Enviar" /> <input type="reset" name="limpar" value="Limpar" /> </form> <hr noshade> </body> </html> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <?php $email_destino = "inem@live.ie"; $nome = $_POST['nome']; $email = $_POST['email']; $assunto = $_POST['assunto']; $mensagem = $_POST['mensagem']; $headers = 'MIME-Version: 1.0'. "\r\n" . 'Content-type: text/html; charset=utf-8' . "\r\n" . 'From: webmaster@inem.3utilities.com' . "\r\n" . 'Reply-To: webmaster@inem.3utilities.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); $msg = '<strong>Nome:</strong> '.$_POST['nome'].'<br />'. '<strong>Email:</strong> '.$_POST['email'].'<br />'. '<strong>Assunto:</strong> '.$_POST['assunto'].'<br />'. '<strong>Mensagem:</strong> '.$_POST['mensagem']; if (mail($email_destino,$assunto,$msg,$headers)){ echo "O seu email foi enviado com sucesso, obrigado!"; }else{ echo "O seu email não foi enviado, por favor reenvie de novo!"; } ?> </body> </html> Espero que me consigam ajudar! abraços INEM Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Setembro 15, 2010 na tag form, troque: method"POST"por: method="post" você esqueceu o = Compartilhar este post Link para o post Compartilhar em outros sites
INEM 0 Denunciar post Postado Setembro 17, 2010 na tag form, troque: method"POST"por: method="post" você esqueceu o = Olá William, Problema resolvido, muito obrigado pela ajuda! Abraços INEM Compartilhar este post Link para o post Compartilhar em outros sites