chlins 1 Denunciar post Postado Janeiro 13, 2013 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
allex_carvalho 124 Denunciar post Postado Janeiro 14, 2013 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
chlins 1 Denunciar post Postado Janeiro 14, 2013 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
allex_carvalho 124 Denunciar post Postado Janeiro 14, 2013 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
chlins 1 Denunciar post Postado Janeiro 14, 2013 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
chlins 1 Denunciar post Postado Janeiro 15, 2013 Resolvido algumas questões, como o recebimento correto do form no email, ainda tem alguns problemas: O retorno para o remetente vai com os mesmos campos do form, ao invés de somente a mensagem. 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