Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gabriel T.

Enviar email PHP

Recommended Posts

Bom pessoal, primeiramente os desejo uma boa noite.

Estou precisando muito da ajuda de vocês...

Tenho um formulário de contato, validado com o plugin jQuery Validate, e então estou sem a função de enviar o e-mail, pois não sei incluí-lo junto com o plugin.

Preciso que, se todos os dados estiverem corretos, o plugin "avisar" ao script php, e o php enviar o e-mail corretamente.

Infelizmente eu não consigo criar essa função...

Pesquisei muito desde a semana passada sobre isso, modifiquei o plugin mas em cada modificação resultava em mais um erro.

Vou postar o plugin que uso para validar o formulário:

Plugin Validation

 

Agora aqui está o que utilizo nas tags <head> do meu documento onde está o formulário:

 

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#contato").validate();
});
</script>

 

O formulário de contato:

 

<form id="contato" name="contato" method="post" action="">
         <ol>
	  	<li>
		  <label for="nome"><em>Nome (Obrigatório, mínimo de 4 caracteres.)</em></label>
		  <input type="text" id="nome" name="nome" class="required texto" minlength="4" />
           </li>
           <li>
		  <label for="email"><em>E-mail (Obrigatório)</em></label>
             <input type="text" id="email" name="email" class="required email texto" />
           </li>
           <li>
		  <label for="assunto"><em>Assunto (Obrigatório)</em></label>
             <input type="text" id="assunto" name="assunto" class="required texto" />
           </li>
           <li>
		  <label for="mensagem"><em>Mensagem<br />(Obrigatório, mínimo de 10 caracteres.)</em></label>
             <textarea id="mensagem" name="mensagem" class="required texto" minlength="10"></textarea>
           </li>
           <li class="button">
		 <input type="image" src="images/submit.png" name="submit" id="submit" />
             <div class="clr"></div> //essa div é somente um elemento css.
           </li>
         </ol>
       </form>

 

Eu estou com um arquivo php que criei para enviar o e-mail.

O php envia 2 e-mails:

um para o administrador, e outro para o cliente ($_POST):

 

<?
header('Content-Type: text/html; charset=iso 8859-1');
$nome      = $_POST["nome"];
$email   = $_POST["email"];
$assunto   = $_POST["assunto"];
$mensagem  = $_POST["mensagem"];
$data      = date("d/m/y");
$ip        = $_SERVER['REMOTE_ADDR'];
$hora      = date("H:i:s");

$linguagem = "\nContent-type: text/html";
$site   = "contato@homeprodutos.com";
$titulo = "Contato Home Produtos";
$msg = "<html>
		<head>
		</head>
			<body>
		  <img src='http://www.homeprodutos.com/images/logo.png' />
		  	<p>
			<br />
		  	Olá, <strong>$nome</strong>.
			<br /><br />
			Sua mensagem foi enviada com sucesso sobre <strong>\"$assunto\"</strong> e em breve será retornada.<br />
			<fieldset>
			<legend>Mensagem:</legend>
			$mensagem
			</fieldset>
			<br />
			Agradecemos o seu contato.
			<br /><br />
			Atenciosamente,<br />
			Equipe <a href='http://www.homeprodutos.com'> Home Produtos </a>
			</p>
			</body>
	</html>";

mail("contato@homeprodutos.com", "$assunto", "Nome: $nome\nData: $data\nIp: $ip\nHora: $hora\nE-mail: $email\nMensagem: $mensagem", "From: $email")){
mail("$email", "$titulo", "$msg", "From: $site".$linguagem)){
?>

 

Também não consegui incluir a mensagem de sucesso no script.

A mensagem seria incluida no PHP ou no plugin?

Bem... É isso.

Obrigado pela sua atenção amigo.

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá mokololo,

 

primeiramente o plugin colocado da forma que você colocou fica bastante limitado, o que acha de usar Ajax neste script?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu uso um form de contato em php q n precisa de AJAX..

olha só:

 

<?php
//pega as variaveis por POST(assim esta o post do meu site, altere essas variaveis de acordo com o seu..


$nome      = $_POST["nome"];
$site     = $_POST["site"];
$email   = $_POST["email"];
$fone  = $_POST["fone"];
$assunto   = $_POST["assunto"];
$mensagem  = $_POST["mensagem"];

global $email; //função para validar a variável $email no script todo

$data      = date("d/m/y");                     //função para pegar a data de envio do e-mail
$ip        = $_SERVER['REMOTE_ADDR'];           //função para pegar o ip do usuário
$navegador = $_SERVER['HTTP_USER_AGENT'];       //função para pegar o navegador do visitante
$hora      = date("H:i");                       //para pegar a hora com a função date

//aqui envia o e-mail para você
mail ("seu_email@provedor.com", //email aonde o php vai enviar os dados do form
     "$assunto",
     "Nome: $nome\nData: $data\nIp: $ip\nNavegador: $navegador\nHora: $hora\nSite: $site\nE-mail: $email\nTelefone: $fone\n\nMensagem: $mensagem",
     "From: $email"
    );

//aqui são as configurações para enviar o e-mail para o visitante

$site   = "email_recipiente@provedor.com";//o e-mail que aparecerá na caixa postal do visitante

$titulo = "Titulo Messagem";//titulo da mensagem enviada para o visitante

$msg    = "$nome, obrigado por entrar em contato conosco, em breve entraremos em contato";

//aqui envia o e-mail de auto-resposta para o visitante
mail("$email",
    "$titulo",
    "$msg",
    "From: $site"
   );
echo "<p align=center>$nome, sua mensagem foi enviada com sucesso!</p>";
echo "<p align=center>Estaremos retornando em breve.</p>";
?>

 

esta é um pagina de resposta, então coloque esse codigo em outro arquivo e envie os dados do form para ela...

facim, entendeu??

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa.. deixa eu ver se entendi.. tu quer que todos os campos sejam preenchidos antes de enviar o e-mail, correto?

 

se for isso beleza... o teu javascript está correto, pois está apontando pra id contato..

 

o teu form está sem action, tu tem que apontar a action pro arquivo php que enviará o e-mail..

 

não analisei o teu script de envio, mas acredito que esteja correto.

 

tenta alguma coisa aí e nos dá o retorno..

 

abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>
<script type="text/javascript">
$(document).ready(function() {

$("#formulario_contato").validate({

	rules: {
		nome: "required",
                        email:{
			required: true,
			email: true
		},
	},
	messages:{
		nome:{ required: 'Campo obrigatório'}

	},
	submitHandler: function(form) {
		var dados = $("#formulario_contato").serialize();
		$.ajax(	{
			type: "POST",
			url: "processa_formulario.php",
			data: "do=cadastrar&"+decodeURIComponent(dados),
			beforeSend: function() {
				$("#form_contato").hide();
				$("#retorno").show();
				$("#retorno").html('<br /><img src="media/images/carregando.gif" /> Enviando...<br />');
			},
			success: function(txt) {
				$("#retorno").html(txt);
			},
			error: function(txt) {
				alert('Erro no ajax');
		}});
		return false;
	}

});

});
</script>



<div id="retorno"></div>

<div id="form_contato">
<form id="formulario_contato" name="formulario_contato" method="post" action="">
         <ol>
                       <li>
                         <label for="nome"><em>Nome (Obrigatório, mínimo de 4 caracteres.)</em></label>
                         <input type="text" id="nome" name="nome" class="required texto" minlength="4" />
           </li>
           <li>
                         <label for="email"><em>E-mail (Obrigatório)</em></label>
             <input type="text" id="email" name="email" class="required email texto" />
           </li>
           <li>
                         <label for="assunto"><em>Assunto (Obrigatório)</em></label>
             <input type="text" id="assunto" name="assunto" class="required texto" />
           </li>
           <li>
                         <label for="mensagem"><em>Mensagem<br />(Obrigatório, mínimo de 10 caracteres.)</em></label>
             <textarea id="mensagem" name="mensagem" class="required texto" minlength="10"></textarea>
           </li>
           <li class="button">
                        <input type="image" src="images/submit.png" name="submit" id="submit" />
             <div class="clr"></div> //essa div é somente um elemento css.
           </li>
         </ol>
       </form>
</div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, obrigado pelas respostas.

Certamente eu necessitava incluir ajax.

Utilizei a função submitHandler como o goruks citou, e então configurei para enviar o e-mail com as funções de outra página php, o arquivo enviar.php.

Além de estar com uma elegante validação, ficou perfeito, graças a ajuda de vocês.

Muito obrigado pessoal, espero poder ajudá-los também qualquer dia...

Caso quiser ver o formulário, aqui está a URL:

AQUI

Obrigado novamente pessoal.

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.