Formulário PHP não envia e-mail.
10/03/2016
0
Estava vendo este tutorial:
https://www.devmedia.com.br/enviar-formulario-por-e-mail-php/21757
Fiz exatamente como no tutorial mas o e-mail não envia, o site está hospedado em servidor pago onde o smtp está ativo, quando clico em enviar ele não retorna nenhum erro, mas também não envia o e-mail, vocês podem verificar o código que estou utilizando abaixo por favor:
Quem puder me ajudar agradeço desde já !
***PHP
<script>window.alert("Mensagem enviada com sucesso!");</script><meta http-equiv='refresh' content='0;URL=index.php'>
<?php
//1 ? Definimos Para quem vai ser enviado o email
$para="contato@harvorar.com.br";
//2 - resgatar os dados digitado no formulário e grava na variavel
$nome = $_POST['nome'];
$mail= $_POST['mail'];
$ddd= $_POST['ddd'];
$telefone= $_POST['telefone'];
$assunto= $_POST['assunto'];
$mensagem= $_POST['msg'];
//4 ? Agora definimos a mensagem que vai ser enviado no e-mail
$mensagem = "<strong>Nome: </strong>".$nome;
$mensagem = "<strong>Email: </strong>".$mail;
$mensagem = "<strong>ddd: </strong>".$ddd;
$mensagem = "<strong>telefone: </strong>".$telefone;
$mensagem = "<strong>Assunto: </strong>".$assunto;
$mensagem = "<strong>Mensagem: </strong>".$mensagem;
//5 ? agora inserimos as codificações corretas e tudo mais.
$headers="Content-Type:text/html; charset=UTF-8\n";
$headers .="From: contato@harvorar.com.br<contato@harvorar.com.br>\n";
//Vai ser
//mostrado que o email partiu deste email e seguido do nome
$headers .="X-Sender: <contato@harvorar.com.br>\n";
//email do servidor
//que enviou
$headers .="X-Mailer: PHP v" .phpversion()."\n";
$headers .="X-IP: " .$_SERVER[ 'REMOTE_ADDR']. "\n";
$headers .="Return-Path: <contato@harvorar.com.br>\n";
//caso a msg //seja respondida vai para este email.
$headers .="MIME-Version: 1.0\n";
mail($nome, $ddd, $telefone, $assunto, $mensagem);
//função que faz o envio do email.
?>
***HTML
<td width="450" valign="top">
<!-- PHP FUNÇÃO -->
<form action="enviar_contato.php" method="post" name="contato" id="contato" onsubmit="return validaForm()">
<table width="400" border="0" align="right" cellpadding="2" cellspacing="2" class="texto">
<tr>
<td height="19" valign="top" class="textos">
<input name="nome" type="text" class="formularios" style="width:100%;" id="nome" onfocus="if(this.value == 'Nome') {this.value = ''};" onblur="if (this.value == '') {this.value = 'Nome'};" value="Nome"/></td>
</tr>
<tr>
<td height="19" valign="top" class="textos">
<input name="mail" type="text" class="formularios" style="width:100%;" id="mail" onfocus="if(this.value == 'Email') {this.value = ''};" onblur="if (this.value == '') {this.value = 'Email'};" value="Email"/></td>
</tr>
<tr>
<td height="19" valign="top" class="textos">
<input name="ddd" type="text" class="formularios" id="ddd" style="width:10%;" onfocus="if(this.value == 'DDD') {this.value = ''};" onblur="if (this.value == '') {this.value = 'DDD'};" value="DDD" maxlength="2"/>
<input name="telefone" type="text" class="formularios" id="telefone" style="width:30%;" onfocus="if(this.value == 'Telefone') {this.value = ''};" onblur="if (this.value == '') {this.value = 'Telefone'};" value="Telefone" maxlength="20"/>
</td>
</tr>
<tr>
<td height="19" valign="top" class="textos">
<input name="assunto" type="text" class="formularios" style="width:100%;" id="assunto" onfocus="if(this.value == 'Assunto') {this.value = ''};" onblur="if (this.value == '') {this.value = 'Assunto'};" value="Assunto"/>
</td>
</tr>
<tr>
<td valign="top" class="textos">
<textarea name="mensagem" rows="5" cols="41" class="formularios" value="" style="WIDTH: 100%; height:120px;" id="msg" onfocus="if(this.value == 'Mensagem') {this.value = ''};" onblur="if (this.value == '') {this.value = 'Mensagem'};" >Mensagem</textarea>
</td>
</tr>
<tr>
<td><input name="Submit" type="image" value="Enviar!" src="images/bot_enviar.jpg" /></td>
</tr>
</table>
</form>
</td>
Bruno Danilo
Post mais votado
06/04/2016
faça o download do pacote: https://github.com/PHPMailer/PHPMailer
descompacte na raiz de seu projeto. E utilize este modelo de código para enviar suas mensagens.
notificar.php
<?php require 'mail_lib/PHPMailerAutoload.php'; $mail = new PHPMailer; //$mail->SMTPDebug = 3; // Enable verbose debug output - somente se houver erros no envio tire o comentário esta linha para ver detalhes do erro $mail->isSMTP(); // Set mailer to use SMTP $mail->Host = 'smtp do seu servidor de email; // Specify main and backup SMTP servers $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = 'usuario de autenticação do email'; // SMTP username $mail->Password = 'senha do email'; // SMTP password $mail->SMTPSecure = 'tsl'; // Enable TLS encryption, `ssl` also accepted $mail->Port = porta de comunicação do servidor ex. 25; // TCP port to connect to - valor sem aspas $mail->From = 'email do sistema aqui'; $mail->FromName = 'Assunto do Email'; //$mail->addAddress('destinatario'); // Add a recipient $mail->addAddress('destinatario1'); $mail->addAddress('destinatario2'); // Name is optional $mail->addReplyTo('', 'Information'); $mail->addCC(''); $mail->addBCC(''); $mail->addAttachment(''); // Add attachments $mail->addAttachment(''); // Optional name $mail->isHTML(true); // Set email format to HTML $mail->Subject = 'Assunto do e-mail'; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; $message= 'Sua mensagem aqui'; //echo $message; $mail->Body = $message; if(!$mail->send()) { // echo 'Mensagem nao enviada.'; // echo 'Erro : ' . $mail->ErrorInfo; } else { // print "<script type = 'text/javascript'> location.href = 'concluido.html'</script>";; }
Leonardo Xavier
Mais Posts
10/03/2016
William
[img]http://arquivo.devmedia.com.br/forum/imagem/269142-20160310-225733.png[/img]
Utilizo esse script em meus sites:
<?php header('Content-type: text/html; charset=utf-8'); define('SERVIDOR', 'sua_conta_email@servicor.com.br'); define('DESTINO', 'email_destino@email.com.br'); define('EMPRESA', Nome_Empresa'); if (isset($_POST['nome'])){ $nome = (isset($_POST['nome']))? $_POST['nome']: ''; $email = (isset($_POST['email']))? $_POST['email']: ''; $assunto = (isset($_POST['assunto']))? $_POST['assunto']: ''; $msg = (isset($_POST['mensagem']))? $_POST['mensagem']: ''; if (empty($nome) || empty($email) || empty($msg)){ $array = array('erro' => 2, 'mensagem' => 'Preencher os campos obrigatórios(*)!'); echo json_encode($array); }else{ if (empty($assunto)): $assunto = "Contato enviado pelo site " . EMPRESA; endif; $mensagem = "Contato enviado pelo site ".EMPRESA."\n"; $mensagem .= "**********************************************************\n"; $mensagem .= "Nome do Contato: ".$nome."\n"; $mensagem .= "E-mail do Contato: ".$email."\n"; $mensagem .= "**********************************************************\n"; $mensagem .= "Mensagem: \n".$msg."\n"; $retorno = EnviaEmail(DESTINO, $email, $assunto, $mensagem); if ($retorno){ $array = array('erro' => 0, 'mensagem' => 'Mensagem enviada com sucesso!'); echo json_encode($array); }else{ $array = array('erro' => 1, 'mensagem' => 'Infelizmente houve um erro ao enviar sua mensagem!'); echo json_encode($array); } } } function EnviaEmail($para, $from, $assunto, $mensagem){ $headers = "From: ".SERVIDOR."\n"; $headers .= "Reply-To: $para\n"; $headers .= "Subject: $assunto\n"; $headers .= "Return-Path: ".SERVIDOR."\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "X-Priority: 3\n"; $headers .= "Content-Type: text/html; charset=UTF-8\n"; $retorno = mail($para, $assunto, nl2br($mensagem), $headers); return $retorno; }
11/03/2016
Marcio Araujo
18/03/2016
Bruno Danilo
..
Renan pontes, não retorna nenhuma mensagem de erro.
04/04/2016
Bruno Danilo
Fiz o teste utilizando seu script e esta me retornando um erro, o que pode ser?
ERRO -> Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/html/qsaldo.com/web/enviar.php on line 7
<?php header('Content-type: text/html; charset=utf-8'); define('SERVIDOR', 'contato@qsaldo.com'); define('DESTINO', 'contato@qsaldo.com'); define('EMPRESA', Qsaldo'); if (isset($_POST['nome'])){ $nome = (isset($_POST['nome']))? $_POST['nome']: ''; $email = (isset($_POST['email']))? $_POST['email']: ''; $assunto = (isset($_POST['assunto']))? $_POST['assunto']: ''; $msg = (isset($_POST['message']))? $_POST['message']: ''; if (empty($nome) || empty($email) || empty($msg)){ $array = array('erro' => 2, 'mensagem' => 'Preencher os campos obrigatórios(*)!'); echo json_encode($array); }else{ if (empty($assunto)): $assunto = "Contato enviado pelo site " . EMPRESA; endif; $mensagem = "Contato enviado pelo site ".EMPRESA."\n"; $mensagem .= "**********************************************************\n"; $mensagem .= "Nome do Contato: ".$nome."\n"; $mensagem .= "E-mail do Contato: ".$email."\n"; $mensagem .= "**********************************************************\n"; $mensagem .= "Mensagem: \n".$msg."\n"; $retorno = EnviaEmail(DESTINO, $email, $assunto, $mensagem); if ($retorno){ $array = array('erro' => 0, 'mensagem' => 'Mensagem enviada com sucesso!'); echo json_encode($array); }else{ $array = array('erro' => 1, 'mensagem' => 'Infelizmente houve um erro ao enviar sua mensagem!'); echo json_encode($array); } } } function EnviaEmail($para, $from, $assunto, $mensagem){ $headers = "From: ".SERVIDOR."\n"; $headers .= "Reply-To: $para\n"; $headers .= "Subject: $assunto\n"; $headers .= "Return-Path: ".SERVIDOR."\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "X-Priority: 3\n"; $headers .= "Content-Type: text/html; charset=UTF-8\n"; $retorno = mail($para, $assunto, nl2br($mensagem), $headers); return $retorno; }
04/04/2016
William
define('EMPRESA', Qsaldo');
04/04/2016
Bruno Danilo
O erro realmente não apareceu mais, realmente faltava uma (´) porém o formulário não está chegando no E-mail, porque será?
04/04/2016
William
define('SERVIDOR', 'contato@qsaldo.com');
Deve estar com valor errado!
04/04/2016
Bruno Danilo
define('SERVIDOR', 'smtp.qsaldo.com');
Continua sem nenhuma ação..
04/04/2016
William
Então uso esse conta na constante SERVIDOR.
04/04/2016
Bruno Danilo
06/04/2016
Leonardo Xavier
06/04/2016
Bruno Danilo
07/04/2016
Bruno Danilo
Download: https://github.com/Guga-Design/envia-e-mail-smtp-gmail-phpmailer
<?php // Variáveis do Formulário Form $nome = $_POST["nome"]; $email = $_POST["email"]; $assunto = $_POST["assunto"]; $telefone = $_POST["telefone"]; $mensagem = $_POST["mensagem"]; // Inclui o arquivo class.phpmailer.php localizado na pasta phpmailer include("class.phpmailer.php"); // Inicia a classe PHPMailer $mail = new PHPMailer(); // Define os dados do servidor e tipo de conexão - NESTE CASO USAREMOS O GMAIL $mail->IsSMTP(); $mail->Host = "smtp.gmail.com"; // Endereço do servidor SMTP $mail->SMTPAuth = true; // Usa autenticação SMTP? (opcional) $mail->Username = 'seu-email@gmail.com'; // Usuário do servidor SMTP - IMPORTANTE - ATIVAR o acesso a aplicativos menos seguros da sua conta GMAIL $mail->Password = 'suasenha'; // Senha do servidor SMTP $mail->port = 587; // Autenticação 587 para conexões TLS 587 se for SSL é 465 $mail->SMTPSecure = 'tls'; // Autenticação 587 TLS // Define o remetente. $mail->From = "seu-email@gmail.com"; // Seu e-mail $mail->FromName = "DISPARO DE EMAIL"; // Nome do disparo // Variáveis dos destinatário(s) $destinatario1 = "destinatario1@gmail.com"; $destinatario2 = "destinatario2@hotmail.com"; $destinatario3 = "destinatario3@gmail.com"; $destinatario4 = "destinatario4@hotmail.com"; $destinatario5 = "destinatario5@gmail.com"; // Define os destinatário(s) $mail->AddAddress($destinatario1); $mail->AddAddress($destinatario2); $mail->AddAddress($destinatario3); $mail->AddAddress($destinatario4); $mail->AddAddress($destinatario5); // DEFININDO OS DADOS DO E-MAIL, ASSUNTO E MENSAGEM // Corpo da Mensagem $mail->IsHTML(true); // Define que o e-mail será enviado em código HTML $mail->Subject = "CLIENTE DO SITE PERGUNTA, $assunto"; // Assunto predefininido e Cliente preenchido. // HTML do corpo do e-mail definindo que Nome, e-mail, telefone e mensagem apareceram no corpo. $mail->Body = "<h2>Nome do Cliente: $nome</h2><h3>Email do cliente: $email<h3/> <h3>TELEFONE/CELULAR: $telefone </h3> <br/> <h2> Mensagem: $mensagem </h2>"; // Envia o e-mail $enviado = $mail->Send(); // Exibe uma mensagem de resultado if ($enviado) { echo "E-mail enviado com sucesso!"; } else { echo "Não foi possível enviar o e-mail !"; } ?>
Clique aqui para fazer login e interagir na Comunidade :)