Ir para conteúdo

POWERED BY:

Arquivado

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

PiXwell

PHPMailer enviando 5 vezes o mesmo e-Mail

Recommended Posts

Bom dia,
Tenho um site hospedado na Locaweb (Hospedagem Linux), e estou enviando um formulário de e-Mail via Ajax ... o envio está ocorrendo corretamente, o problema está na quantidade de mensagens. Ao invés de enviar apenas uma mensagem para cada (1 para o Restaurante e outra para o cliente), está disparando 5 mensagens iguais, vejam a imagem:

Caixa_de_entrada.png

Como resolver isso??

Script PHP:

<?php

require 'mailer/PHPMailerAutoload.php';
$mail_restaurante = new PHPMailer;
$mail_cliente = new PHPMailer;

// Campos do formulario
$nome = filter_input(INPUT_POST, 'nome', FILTER_SANITIZE_SPECIAL_CHARS);
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_SPECIAL_CHARS);
$dataReserva = filter_input(INPUT_POST, 'data-reserva', FILTER_SANITIZE_SPECIAL_CHARS);
$horaReserva = filter_input(INPUT_POST, 'hora-reserva', FILTER_SANITIZE_SPECIAL_CHARS);
$qtdPessoas = filter_input(INPUT_POST, 'qtd-pessoas', FILTER_SANITIZE_SPECIAL_CHARS);

//====================================================
//Informacoes dos e-Mails **************************//
//====================================================
$infoEmail['email'] = 'email@email.com.br';
$infoEmail['senha'] = 'secreto';

$infoEmail['assunto_restaurante'] = "Solicitação de reserva para {$nome}";
$infoEmail['mensagem_restaurante'] = "
<p>{$nome} com o e-mail {$email}, deseja efetuar uma reserva para o dia {$dataReserva}, horário {$horaReserva} para {$qtdPessoas}.</p>

<p>
    <b>Nome:</b> {$nome} <br>
    <b>e-Mail:</b> {$email} <br>
    <b>Data:</b> {$dataReserva} <br>
    <b>Horário:</b> {$horaReserva} <br>
    <b>Nº de pessoas:</b> {$qtdPessoas}<br>
</p>
";
    
$infoEmail['assunto_cliente'] = 'Restaurante:: Seu pedido foi recebido, aguarde nossa confirmação';
$infoEmail['mensagem_cliente'] = "
    <p>Restaurante :: Seu pedido foi recebido, aguarde nossa confirmação</p>
<h3>Dados do seu pedido de reserva:</h3>
<p>
    <b>Nome:</b> {$nome} <br>
    <b>e-Mail:</b> {$email} <br>
    <b>Data:</b> {$dataReserva} <br>
    <b>Horário:</b> {$horaReserva} <br>
    <b>Nº de pessoas:</b> {$qtdPessoas}<br>
</p>
";

//Regex formato da data
$rgxFormatoData = '/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/[12][0-9]{3}$/';
preg_match($rgxFormatoData, $dataReserva, $matches);

//Data atual
$hoje = new DateTime( 'now', new DateTimeZone( 'America/Sao_Paulo'));
$hojeMais2Dias = new DateTime(' +2 day');

//Campos preenchidos
if(empty($nome) or empty($email) or empty($dataReserva) or empty($horaReserva) or empty($qtdPessoas)){
    echo '<p style="color: red">Por favor, preencha todos os campos</p>';
}
//A data combina com o formato permitido? 00/00/0000
elseif($matches){
    //O dia escolhido obedece a regra de +2 dias?
    if($dataReserva < $hojeMais2Dias->format('d/m/Y')){
        echo '<p style="color: red">Escolha uma data a partir de ' . $hojeMais2Dias->format('d/m/Y') . '</p>';
    } 
    //Enviar mensagem
    else {        
        //========================================================
        //Mensagem para o restaurante **************************//
        //======================================================== 
        $mail->SMTPDebug = 2;
        $mail_restaurante->isSMTP(); // Set mailer to use SMTP
        $mail_restaurante->Host = 'email-ssl.com.br'; // Specify main and backup SMTP servers
        $mail_restaurante->SMTPAuth = true; // Enable SMTP authentication
        $mail_restaurante->Username = $infoEmail['email']; // SMTP username
        $mail_restaurante->Password = $infoEmail['senha']; // SMTP password
        $mail_restaurante->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
        $mail_restaurante->Port = 587; // TCP port to connect to
        $mail_restaurante->isHTML(true); // Set email format to HTML        
        $mail_restaurante->setFrom($infoEmail['email']);
        
        $mail_restaurante->addAddress($infoEmail['email'], 'Restaurante'); // Add a recipient        
        $mail_restaurante->Subject = $infoEmail['assunto_restaurante']; //Here is the subject
        $mail_restaurante->Body    = $infoEmail['mensagem_restaurante'];//This is the HTML message
        
        if(!$mail_restaurante->send()) {
            echo 'Erro ao enviar e-amil para - Mailer Error: ' . $mail_cliente->ErrorInfo;
        } else {
            
            //====================================================
            //Mensagem para o cliente **************************//
            //====================================================
            $mail->SMTPDebug = 2;
            $mail_cliente->isSMTP(); // Set mailer to use SMTP
            $mail_cliente->Host = 'email-ssl.com.br'; // Specify main and backup SMTP servers
            $mail_cliente->SMTPAuth = true; // Enable SMTP authentication
            $mail_cliente->Username = $infoEmail['email']; // SMTP username
            $mail_cliente->Password = $infoEmail['senha']; // SMTP password
            $mail_cliente->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
            $mail_cliente->Port = 587; // TCP port to connect to
            $mail_cliente->isHTML(true); // Set email format to HTML

            $mail_cliente->setFrom($infoEmail['email']);
            $mail_cliente->addAddress($email, $nome); // Add a recipient        

            $mail_cliente->Subject = $infoEmail['assunto_cliente']; //Here is the subject
            $mail_cliente->Body    = $infoEmail['mensagem_cliente'];//This is the HTML message   

            if(!$mail_cliente->send()) {
                echo 'Erro ao enviar e-amil para ' . $email . ' - Mailer Error: ' . $mail_cliente->ErrorInfo;
            } else {
                echo '<p style="color: green">Mensagem enviada com sucesso!</p>';
                $mail_cliente->ClearAllRecipients();
            }//else cliente
            $mail_restaurante->ClearAllRecipients();
        }//else restaurante         
    }//else validacao
}//elseif matches

Script JQuery:

(function ($) {
    var form_reservas = $('#reservas');
    var tema = '/wp-content/themes/restaurante/';
    var script_reservas = tema + 'reservas/reservaRestaurante.php';        
    var status = $('#status-envio');    
        
    function retorno(data){
        status.hide().html(data).fadeIn();
    }
    
    //Ao clicar em Submit
    form_reservas.submit(function(event){
        event.preventDefault();
        var campos = form_reservas.serializeArray();
        
        //Percorrendo os campos
        $.map(campos, function(campo){
            //Minha Validação ===============
            } else {
                $.ajax({
                    type: "POST",
                    url: script_reservas,
                    data: campos,
                    beforeSend: function(){
                        status.hide().html('<p style="color: #337AB7"><img src="'+ tema +'images/loading_icon.svg"> Enviando ...</p>').fadeIn();
                    },
                    error: retorno,
                    success: retorno,
                    complete: function(){form_reservas.get(0).reset;}
                });
            }
        });        
    });
})(jQuery);

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por joao b silva
      Tenho uma pequena aplicação em php que gera arquivos pdf com a MPDF e envia email com a PHPMAILER. De repente a app parou de enviar os emails  e apresenta a seguinte mensagem de erro:
       
      Error PHPMailer: SMTP Error: Could not authenticate.
       
      Faço uso de um hotmail para a configuração do PHPMAILER.
    • Por douglas79
      Boa noite,
      primeiramente eu fiz um site num servidor local (Wordpress 5.9), criei uma pasta chamada blog e fiz a transferência via FTP para essa pasta, mas não instalei o Wordpress nativo da hospedagem.. Acessei o painel de controle e criei o banco de dados e importei o BD do phpmyadmin do servidor XAMPP. Daí quando vou acessar o domínio www.guardamunparacambi.info/blog, aparece a mensagem "Erro ao conectar com o banco de dados". O que pode estar acontecendo?
      Preciso de ajuda!
    • Por douglas79
      Boa noite,
      primeiramente eu fiz um site num servidor local (Wordpress 5.9), criei uma pasta chamada blog e fiz a transferência via FTP para essa pasta, mas não instalei o Wordpress nativo da hospedagem.. Acessei o painel de controle e criei o banco de dados e importei o BD do phpmyadmin do servidor XAMPP. Daí quando vou acessar o domínio www.guardamunparacambi.info/blog, aparece a mensagem "Erro ao conectar com o banco de dados". O que pode estar acontecendo?
      Preciso de ajuda!
    • Por douglas79
      Boa noite,
      primeiramente eu fiz um site num servidor local (Wordpress 5.9), criei uma pasta chamada blog e fiz a transferência via FTP para essa pasta, mas não instalei o Wordpress nativo da hospedagem.. Acessei o painel de controle e criei o banco de dados e importei o BD do phpmyadmin do servidor XAMPP. Daí quando vou acessar o domínio www.guardamunparacambi.info/blog, aparece a mensagem "Erro ao conectar com o banco de dados". O que pode estar acontecendo?
      Preciso de ajuda!
    • Por douglas79
      Boa noite,
      primeiramente eu fiz um site num servidor local (Wordpress 5.9), criei uma pasta chamada blog e fiz a transferência via FTP para essa pasta, mas não instalei o Wordpress nativo da hospedagem.. Acessei o painel de controle e criei o banco de dados e importei o BD do phpmyadmin do servidor XAMPP. Daí quando vou acessar o domínio www.guardamunparacambi.info/blog, aparece a mensagem "Erro ao conectar com o banco de dados". O que pode estar acontecendo?
      Preciso de ajuda!
×

Informação importante

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