Ir para conteúdo

POWERED BY:

Arquivado

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

chlins

Meu envio de email com PHPMailer incompleto

Recommended Posts

Pessoal,
O que há de errado neste código para não funcionar a contento.
O email é enviado e não são limpos os campos.
O email é enviado, aparece a mensagem, mas não é redirecionado para outra página.
Os dados email e telefone não são tratados, não parecem no email.
Desta forma é que recebo os dados do form em meu email:

 

 

 

Mensagem de:
Nome: Carlos de Barros LIma
E-mail:
Telefone:
Mensagem:
Texto de exemplo para teste de envio de email via form.
13/01/2013 20:14

 

código que trata: config.php

<?php function sendMail($nome,$mensagem,$remetente,$nomeRemetente,$destino,$nomeDestino){
require_once('phpmailer/class.phpmailer.php');
$mail = new PHPMailer();

error_reporting(E_ALL);
error_reporting(E_STRICT);

date_default_timezone_set('America/Sao_Paulo');
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = 'mail.dominio.com';
$mail->Port = '587';

$mail->Username = 'meu@dominio.com';
$mail->Password = '12345678';

$mail->From = $remetente; //remetente
$mail->FromName= $nomeRemetente; //remetente nome

$mail->IsHTML(true);
$mail->WordWrap = 50;

$mail->Subject = 'Fale conosco';

//$mail->Body = $mensagem;
$mail->CharSet="UTF-8";
$mail->AddAddress($destino,$nomeDestino);

$msg  = " <b>Mensagem de:</b><br>";
$msg .= " <b>Nome:</b> $nome<br>";
$msg .= " <b>E-mail:</b> $email<br>";
$msg .= " <b>Telefone:</b> $dddFone $telefone<br>";
$msg .= " <b>Mensagem:</b><br> $mensagem<br><br>";

$msg .=  date("d/m/Y H:i");
$mail->Body = $msg;

if(!$mail->Send()){
echo '<div class="alert">Erro ao enviar mensagem?!</div>';
}else{
$_SESSION['enviado'] = '<div class="alert">Mensagem enviada com sucesso!</div>';
header('Location: obrigado.php');
}
}?>

 

 

Código dentro do form:

<?php if(isset($_POST['enviar'])){
        unset($_SESSION['enviado']);
      $nome = strip_tags(trim($_POST['nome']));
      $email = strip_tags(trim($_POST['email']));
      $dddFone = strip_tags(trim($_POST['dddFone']));
      $telefone = strip_tags(trim($_POST['telefone']));
      $mensagem = strip_tags(trim($_POST['mensagem']));

      $date = date("d/m/Y H:i");

      if ($nome == '' || $email == '' || $dddFone == '' || $telefone == '' || $mensagem == '') {
      echo '<div class="alert">*Todos os campos são obrigatórios.</div>';
      }elseif (!preg_match("/^[a-z0-9_\.\-]+@[a-z0-9_\.\-]*[a-z0-9_\-]+\.[a-z]{2,4}$/i", $email)) {
      echo '<div class="alert">*Informe um email válido.</div>';
      }else{
      require('config.php');
      sendMail($nome,$mensagem,$email,$nome,'meu@dominio.com','suporte');
      sendMail($nome,'Obrigado por entrar em contato, responderemos em breve','meudom@ig.com.br','SUPORTE ',$email,$nome);
}
if(!empty($_SESSION['enviado'])){
echo $_SESSION['enviado'];
unset($_SESSION['enviado']);
}
}

    ?>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você só informou nas variáveis nome e mensagem, veja:

 

<?php function sendMail($nome,$mensagem,$remetente,$nomeRemetente,$destino,$nomeDestino){

Está faltando Mensagem de, E-mail e Telefone.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você só informou nas variáveis nome e mensagem, veja:

 

<?php function sendMail($nome,$mensagem,$remetente,$nomeRemetente,$destino,$nomeDestino){

Está faltando Mensagem de, E-mail e Telefone.

 

Olá Allex,

 

Eu havia feito o que me sugere, mas sem fazer o mesmo na outra página (form), deu certo, está aparecendo tudo correto no email. Mas aparece mensagem de erro junto com a de correto.

 

 

 

Invalid address: You must provide at least one recipient email address.

Erro ao enviar mensagem?!
Mensagem enviada com sucesso!

 

e falta resolver as outras questões:

 

  • O email é enviado e não são limpos os campos.
  • O email é enviado, aparece a mensagem, mas não é redirecionado para outra página.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A mensagem: Invalid address: You must provide at least one recipient email address, diz que você precisa fornecer ao menos um e-mail destinatario. Verifique se aqui $mail->From = $remetente; está chegando o valor correto.

 

Quanto a validação do envio de e-mail, geralmente faço ao contrario, não faço a negação na $mail:

 

if($mail->Send()){
$_SESSION['enviado'] = '<div class="alert">Mensagem enviada com sucesso!</div>';
header('Location:obrigado.php');
}else{
echo '<div class="alert">Erro ao enviar mensagem?!</div>';
}

Não sei se é motivo de entrar no if e no else.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A mensagem: Invalid address: You must provide at least one recipient email address, diz que você precisa fornecer ao menos um e-mail destinatario. Verifique se aqui $mail->From = $remetente; está chegando o valor correto.

 

Quanto a validação do envio de e-mail, geralmente faço ao contrario, não faço a negação na $mail:

 

if($mail->Send()){
$_SESSION['enviado'] = '<div class="alert">Mensagem enviada com sucesso!</div>';
header('Location:obrigado.php');
}else{
echo '<div class="alert">Erro ao enviar mensagem?!</div>';
}

Não sei se é motivo de entrar no if e no else.

 

Já havia tentado isto. Pela lógica, os dois dá certo.

Acho que tem haver com o laço mesmo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido algumas questões, como o recebimento correto do form no email, ainda tem alguns problemas:

  1. O retorno para o remetente vai com os mesmos campos do form, ao invés de somente a mensagem.
  2. O form não é limpo ao enviar o email.

A questão do redirecionamento, só funcionou usando após o fechamento do PHP:

Mas se voltar na seta, os dados ainda estão no form, nada de UNSET funcionar.

 

<META HTTP-EQUIV="Refresh" CONTENT="2;URL= obrigado.php" />

 

O problema da mensagem de retorno está ligado diretamente na função:


 

Esta parte é no config: está correto.function sendMail($nome,$email,$addFone,$telefone,$mensagem,$remetente,$nomeRemetente,$destino,$nomeDestino);O problema é no form, pois se excluo os campos que não há necessidade para o email retorno, dá erro:sendMail($nome,$email,$addFone,$telefone,'Obrigado por entrar em contato, responderemos em breve','email@ig.com.br','SUPORTE',$email,$nome);

 

 

Se coloco desta forma:

sendMail('Obrigado por entrar em contato, responderemos em breve','meumail@ig.com.br','SUPORTE',$email,$nome);

 

Dá erro. Com se fosse obrigatório, todos os campos da função no config.

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.