Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia!
O Formulário do site abaixo não envia os dados do formulário preenchido, quando clica em enviar, volta para a index. Só que o e-mail do destinatário está correto, host.. enfim, tudo, então é algo com o código que não estou conseguindo resolver
site: www.meupotinhodafruta.com.br
Por favor, quem puder me ajudar :(
Função:
<?php
function sendMail($de,$para,$mensagem,$assunto)
{
require_once('phpmailer/class.phpmailer.php');
$mail = new PHPMailer(true);
$mail->IsSMTP();
try {
$mail->SMTPAuth = true;
$mail->Host = 'br736.hostgator.com.br';
$mail->SMTPSecure = "mail.meupotinhodafruta.com.br"; #remova se nao usar gmail
$mail->Port = 21; #remova se nao usar gmail
$mail->Username = 'contato@meupotinhodafruta.com.br';
$mail->Password = '';
$mail->Andrezza($para);'contato@meupotinhodafruta.com.br';
$mail->AddReplyTo($de);
$mail->SetFrom($de);
$mail->Subject = $assunto;
$mail->MsgHTML($mensagem);
$mail->Send();
$envio = true;
} catch (phpmailerException $e) {
$envio = true;
} catch (Exception $e) {
$envio = true;
}
return $envio;
}
?>
Index.php
<?
include "funcao.php";
if(strlen($_POST['nome'])) if(sendMail($_POST['email'],'contato@meupotinhodafruta.com.br', $_POST['mensagem'], 'Formulário de contato'))
{
echo "Sua mensagem foi enviada com sucesso!";
}
else
{
echo "Ocorreu um erro ao enviar";
}
echo "<br><a href='index.php'>Voltar</a>";
exit();
}
?><html>
<head>
<title>Meu potinho da fruta</title>
<meta charset="iso-8859-1">
<link rel="stylesheet" href="file:///C|/Users/Usuario/Documentos/meupotinhodafruta/css/style.css" type="text/css" media="all" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<h2>Formulário de contato - <a href="[http://www.meupotinhdafruta.com.br](http://www.meupotinhdafruta.com.br)">Meu Potinho da Fruta</a></h2>
<form method="post" id="formulario_contato" onsubmit="validaForm(); return true;" class="form">
<p class="name">
<label for="name">Nome</label>
<input type="text" name="nome" id="nome" placeholder="Seu Nome" />
</p>
<p class="email">
<label for="email">E-mail</label>
<input type="text" name="email" id="email" placeholder="mail@exemplo.com.br" />
</p>
<p class="text">
<label for="mensagem">Mensagem</label>
<textarea name="mensagem" id="mensagem" placeholder="Escreva sua mensagem" /></textarea>
</p>
<p class="submit">
<input type="submit" value="Enviar" />
</p>
</form>
<script type="text/javascript">
function validaForm()
{
erro = false;
if($('#nome').val() == '')
{
alert('Você precisa preencher o campo Nome');erro = false;
}
if($('#email').val() == '' && !erro)
{
alert('Você precisa preencher o campo E-mail');erro = false;
}
if($('#mensagem').val() == '' && !erro)
{
alert('Você precisa preencher o campo Mensagem');erro = false;
}
//se nao tiver erros
if(!erro)
{
$('#formulario_contato').submit();
}
}
</script>
</body>
</html>Bem-vindo ao fórum! :)
Recomendo que leia as regras e orientações de participação
Habilite todas as exibições de erro, como mostrado neste tópico, na Orientação No. 3
e o código que envia o email, onde esta?
Função:
<?php
function sendMail($de,$para,$mensagem,$assunto)
{
require_once('phpmailer/class.phpmailer.php');
$mail = new PHPMailer(true);
$mail->IsSMTP();
try {
$mail->SMTPAuth = true;
$mail->Host = 'br736.hostgator.com.br';
$mail->SMTPSecure = "mail.meupotinhodafruta.com.br"; #remova se nao usar gmail
$mail->Port = 21; #remova se nao usar gmail
$mail->Username = 'contato@meupotinhodafruta.com.br';
$mail->Password = '';
$mail->Andrezza($para);'contato@meupotinhodafruta.com.br';
$mail->AddReplyTo($de);
$mail->SetFrom($de);
$mail->Subject = $assunto;
$mail->MsgHTML($mensagem);
$mail->Send();
$envio = true;
} catch (phpmailerException $e) {
$envio = true;
} catch (Exception $e) {
$envio = true;
}
return $envio;
}
?>
Index
<?
include "funcao.php";
if(strlen($_POST['nome'])) if(sendMail($_POST['email'],'contato@meupotinhodafruta.com.br', $_POST['mensagem'], 'Formulário de contato'))
{
echo "Sua mensagem foi enviada com sucesso!";
}
else
{
echo "Ocorreu um erro ao enviar";
}
echo "<br><a href='index.php'>Voltar</a>";
exit();
}
?><html>
<head>
<title>Meu potinho da fruta</title>
<meta charset="iso-8859-1">
<link rel="stylesheet" href="file:///C|/Users/Usuario/Documentos/meupotinhodafruta/css/style.css" type="text/css" media="all" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<h2>Formulário de contato - <a href="[http://www.meupotinhdafruta.com.br](http://www.meupotinhdafruta.com.br)">Meu Potinho da Fruta</a></h2>
<form method="post" id="formulario_contato" onsubmit="validaForm(); return true;" class="form">
<p class="name">
<label for="name">Nome</label>
<input type="text" name="nome" id="nome" placeholder="Seu Nome" />
</p>
<p class="email">
<label for="email">E-mail</label>
<input type="text" name="email" id="email" placeholder="mail@exemplo.com.br" />
</p>
<p class="text">
<label for="mensagem">Mensagem</label>
<textarea name="mensagem" id="mensagem" placeholder="Escreva sua mensagem" /></textarea>
</p>
<p class="submit">
<input type="submit" value="Enviar" />
</p>
</form>
<script type="text/javascript">
function validaForm()
{
erro = false;
if($('#nome').val() == '')
{
alert('Você precisa preencher o campo Nome');erro = false;
}
if($('#email').val() == '' && !erro)
{
alert('Você precisa preencher o campo E-mail');erro = false;
}
if($('#mensagem').val() == '' && !erro)
{
alert('Você precisa preencher o campo Mensagem');erro = false;
}
//se nao tiver erros
if(!erro)
{
$('#formulario_contato').submit();
}
}
</script>
</body>
</html>Use ErrorInfo para exibir o erro do PHPMailer
Faça debug usando SMTPDebug
Mais detalhes aqui:
http://rberaldo.com.br/enviando-e-mails-com-a-classe-phpmailer/
>
Use ErrorInfo para exibir o erro do PHPMailer
Faça debug usando SMTPDebug
Mais detalhes aqui:
http://rberaldo.com.br/enviando-e-mails-com-a-classe-phpmailer/
http://phpmailer.worxware.com/?pg=methods
http://phpmailer.worxware.com/index.php?pg=properties
Muito obrigada Beraldo! Vou tentar e falo se deu certo!
Olá bom dia!!
Eu dei uma verificada no seu código e fiz um teste aqui, ele mostra erro no SMTP diz que não foi conectado.
Segue o código em que fiz em cima do seu.
<!DOCTYPE html>
<html>
<head>
<title>Meu potinho da fruta</title>
<meta charset="iso-8859-1">
<link rel="stylesheet" href="" type="text/css" media="all" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<h2>Formulário de contato - <a href="[http://www.meupotinhdafruta.com.br](http://www.meupotinhdafruta.com.br)">Meu Potinho da Fruta</a></h2>
<form method="post" id="formulario_contato" class="form">
<p class="name">
<label for="name">Nome</label>
<input type="text" name="nome" id="nome" placeholder="Seu Nome" />
</p>
<p class="email">
<label for="email">E-mail</label>
<input type="text" name="email" id="email" placeholder="mail@exemplo.com.br" />
</p>
<p class="text">
<label for="mensagem">Mensagem</label>
<textarea name="mensagem" id="mensagem" placeholder="Escreva sua mensagem" /></textarea>
</p>
<p class="submit">
<input type="button" value="Enviar" onclick="validaForm();" />
</p>
</form>
<script type="text/javascript">
function validaForm(){
$.ajax({
url:'enviar.php',
type:'POST',
data: $('#formulario_contato').serialize(),
success: function (data) {
alert(data);
}
});
}
</script>
</body>
</html>
Tela enviar.php
<?php
require("PHPMailer-master/class.phpmailer.php");
$nome = $_POST['nome'];
$email = $_POST['email'];
$mensagem = $_POST['mensagem'];
$recebe_email = 'ckcesaraugusto@gmail.com';
$recebe_nome = $nome;
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->CharSet = 'UTF-8';
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "mail.meupotinhodafruta.com.br"; // sets the prefix to the servier
$mail->Host = "br736.hostgator.com.br"; // sets GMAIL as the SMTP server
$mail->Port = 21; // set the SMTP port for the GMAIL server
$mail->Username = "contato@meupotinhodafruta.com.br"; // GMAIL username
$mail->Password = ""; // GMAIL password
$mail->From = $recebe_email; // From
$mail->FromName = $recebe_nome;
$mail->AddReplyTo($recebe_email, $recebe_nome);
$mail->AddAddress("ckcesaraugusto@gmail.com","ckcesaraugusto@gmail.com");
// Email e nome de quem receberá
$mail->IsHTML(true); // Enviar como HTML
$mail->Subject = ".. :: Contato - Site :: .."; // Assunto
$mail->Body =
"Nome: ".$nome."<br>".
"E-mail: ".$email."<br>".
"Mensagem: ".$mensagem."<br>";
if(!$mail->Send()){
echo "E-mail não enviado!<br>";
echo $mail->ErrorInfo;
exit; echo"1";
}Eu passei por uma situação parecida com uma hospedagem da empresa em que trabalho, mandando por localhost, ele vai, agora la no servidor não envia, dai a solução tive que usar o mail() do próprio php.
Faz este teste, se ele em localhost enviar, já sabe onde esta a ferida.
Fiz um teste aqui, mandei pro servidor esse código e funfou.
Fiz um teste aqui, mandei pro servidor esse código e funfou.
Funfou quer dizer que funcionou? haha desculpa sou leiga. Mas se sim eu vou tentar e muito obrigada :)
Fiz um teste aqui, mandei pro servidor esse código e funfou.
Quando você enviou, apareceu uma mensagem que foi enviada a mensagem?
Olá, em port coloque 587 e confira se o servidor e dados de acesso estão corretos.
Olá, em port coloque 587 e confira se o servidor e dados de acesso estão corretos.
Eu entrei em contato com o suporte da hostagator e ele disse que esse formulário não funciona no servidor de e-mails deles :/
Faz esse teste aqui, ele funciona no meu servidor. A só funciona online não local.
<?php
$nome = $_POST['nome'];
$email = $_POST['email'];
$mensagem = $_POST['mensagem'];
$para = "ckcesaraugusto@gmail.com";
$assunto = "Contato do site!";
$mensagem = "<br> <strong>Nome: </strong>".$nome;
$mensagem .= "<br> <strong>E-mail: </strong>".$email;
$mensagem .= "<br> <strong>Mensagem: </strong>".$mensagem;
$headers = "Content-Type:text/html; charset=UTF-8\n";
$headers .= "From: site <ckcesaraugusto@gmail.com>\n"; //Vai ser //mostrado que o email partiu deste email e seguido do nome
$headers .= "X-Sender: <ckcesaraugusto@gmail.com>\n"; //email do servidor //que enviou
$headers .= "X-Mailer: PHP v".phpversion()."\n";
$headers .= "X-IP: ".$_SERVER['REMOTE_ADDR']."\n";
$headers .= "Return-Path: <ckcesaraugusto@gmail.com>\n"; //caso a msg //seja respondida vai para este email.
$headers .= "MIME-Version: 1.0\n";
if(mail($para, $assunto, $mensagem, "-r", $headers)){
echo"1";
}else{
echo"Não foi!";
}Eu entrei em contato com o suporte da hostagator e ele disse que esse formulário não funciona no servidor de e-mails deles :/
Peça mais detalhes.
Pela resposta, entende-se que eles não têm SMTP local. Se for isso, é só usar um SMTP externo, como o do Gmail, como ensino neste tutorial
Note que a porta 21 é para FTP. SMTP usa 587, 465 ou 25, dependendo da tecnologia de envio (SSL ou TLS)
Já tive um problema parecido, mas era porque o php do index estava sendo
aberto assim <? e quando alterei para <?php, resolveu o meu caso, não sei tem
algo a ver, mas no meu caso resolveu.
e o código que envia o email, onde esta?