Send email within if with phpmailer

-2

I've already created a phpmailer folder inside my server with the PHPMailer.php and SMTP.php classes. I now have this code to insert into the database table:

$data = isset($_POST["DataRegisto"]) ? $_POST["DataRegisto"] : '';   
$contacto = isset($_POST["Contacto"]) ? $_POST["Contacto"] : '';    
$telefone = isset($_POST["Telefone"]) ? $_POST["Telefone"] : '';
$crianca = isset($_POST["NomeCrianca"]) ? $_POST["NomeCrianca"] : ''; 
$nascimento = isset($_POST["DataNasc"]) ? $_POST["DataNasc"] : ''; 
$visita = isset($_POST["Visita"]) ? $_POST["Visita"] : '';   
$datavisita = isset($_POST["DataVisita"]) ? $_POST["DataVisita"] : '';
$observacao1 = isset($_POST["Observacao1"]) ? $_POST["Observacao1"] : '';    

$sql = "INSERT INTO InscricoesInf ('DataRegisto','Nome','Contacto','Telefone','NomeCrianca','DataNasc','Visita','DataVisita','Observacao1')   VALUES('$data','xxxxxx','$contacto','$telefone','$crianca','$nascimento','$visita','$datavisita','$observacao1')";

$qr = mysqli_query($conn, $sql);
$conn->close();

I would like every time I make a new entry in the database table send an email to notify the person responsible for this.

With the solutions I've developed, I've inserted my code, but you are not sending the email:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

class Mail
{
    public function sendMail($crianca, $contacto, $nascimento, $message)
    {
        require './PHPMailer';
        require './SMTP';
        require './Exception';

        $mail = new PHPMailer();
        try {
            // Server settings
            $mail->isSMTP();                                      // Define o mail para usar o SMTP
            $mail->Host = 'smtp.hotmail.com';                     // Define o host do e-mail
            $mail->SMTPAuth = true;                               // Permite autenticação SMTP 
            $mail->Username = '[email protected]';              // Conta de e-mail que enviará o e-mail
            $mail->Password = 'xxxxxxx';                       // Senha da conta de e-mail
            $mail->SMTPSecure = 'tls';                            // Permite encriptação TLS
            $mail->Port = 587;                                    // Porta TCP que irá se conectar
            $mail->SMTPOptions = array( // Configuração adicional, não obrigatória (caso de erro de ssl)
                'ssl' => array(
                    'verify_peer' => false,
                    'verify_peer_name' => false,
                    'allow_self_signed' => true
                )
            );

             // Recipients
            $mail->setFrom('[email protected]', 'Título do e-mail, ou assunto'); // Define o remetente
            $mail->addAddress('[email protected]', 'Contato Site');             // Define o destinário

            // Content
            $mail->isHTML(true); // Define o formato do e-mail para HTML
            $mail->Subject = 'Contato feito pelo site';
            $mail->Body = "
                        <html>
                        <head>
                        </head>
                        <body>
                        <h2>Pedido de Informação</h2>

                        <table>
                          <tr>
                            <th>Nome</th>
                            <th>Telefone</th>
                            <th>Data Nascimento</th>
                          </tr>
                          <tr>
                            <td>$crianca</td> 
                            <td>$contacto</td>
                            <td>$nascimento</td>
                          </tr>
                        </table>

                        <h2>Novo registo nos pedidos de informação./h2>

                        <p>$message</p>

                        </body>
                        </html>";
            $mail->send(); // Envia o e-mail
            return true;
        } catch (Exception $e) { // Se capturar exceção retorna false
            return false;
        }
    }
}

$data = isset($_POST["DataRegisto"]) ? $_POST["DataRegisto"] : '';   
$contacto = isset($_POST["Contacto"]) ? $_POST["Contacto"] : '';    
$telefone = isset($_POST["Telefone"]) ? $_POST["Telefone"] : '';
$crianca = isset($_POST["NomeCrianca"]) ? $_POST["NomeCrianca"] : ''; 
$nascimento = isset($_POST["DataNasc"]) ? $_POST["DataNasc"] : ''; 
$visita = isset($_POST["Visita"]) ? $_POST["Visita"] : '';   
$datavisita = isset($_POST["DataVisita"]) ? $_POST["DataVisita"] : '';
$observacao1 = isset($_POST["Observacao1"]) ? $_POST["Observacao1"] : '';    

$sql = "INSERT INTO InscricoesInf ('DataRegisto','Nome','Contacto','Telefone','NomeCrianca','DataNasc','Visita','DataVisita','Observacao1')
VALUES ('$data','xxxxxx','$contacto','$telefone','$crianca','$nascimento','$visita','$datavisita','$observacao1')";

if ($conn->query($sql)) { 
    $Mail = new Mail();
    $Mail->sendEmail('Seu nome', 'Telefone', 'Data Nascimento', 'Mensagem do e-mail');
    $conn->close();
} else {
    echo 'Erro';
}
    
asked by anonymous 11.09.2018 / 15:55

3 answers

2

To send e-mail with PHPMailer you can define a basic structure that will allow you to send e-mails via SMTP or POP3 connection.

Before starting, follow the tutorial below:

  • Download the latest version (in this case is 6.0.5) from PHPMailer .

  • Unzip the downloaded file and keep only those files together with the src folder:

    • Exception.php, OAuth.php, PHPMailer.php, POP3.php, and SMTP.php;
  • Now let's get to what really matters, sending email.

    Let's define a basic structure for our project.

    /seu_projeto/
       |--app/
       |    |--class/
       |    |       |--PHPMailer/
       |    |       |            |--src/
       |    |       |            |     |Exception.php
       |    |       |            |     |OAuth.php
       |    |       |            |     |PHPMailer.php
       |    |       |            |     |POP3.php
       |    |       |            |     |SMTP.php
       |    |Mail.php
    

    With this we can already perform the email sending script using the Mail.php class. In the example for a basic form.

    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
    
    class Mail
    {
        public function sendMail($name, $email, $phone, $subject, $message)
        {
            require 'PHPMailer/src/PHPMailer.php';
            require 'PHPMailer/src/SMTP.php';
            require 'PHPMailer/src/Exception.php';
    
            $mail = new PHPMailer();
            try {
                // Server settings
                $mail->isSMTP();                                      // Define o mail para usar o SMTP
                $mail->Host = 'smtp.dominio.net';                     // Define o host do e-mail
                $mail->SMTPAuth = true;                               // Permite autenticação SMTP 
                $mail->Username = '[email protected]';              // Conta de e-mail que enviará o e-mail
                $mail->Password = 'exemplo123';                       // Senha da conta de e-mail
                $mail->SMTPSecure = 'tls';                            // Permite encriptação TLS
                $mail->Port = 587;                                    // Porta TCP que irá se conectar
                $mail->SMTPOptions = array( // Configuração adicional, não obrigatória (caso de erro de ssl)
                    'ssl' => array(
                        'verify_peer' => false,
                        'verify_peer_name' => false,
                        'allow_self_signed' => true
                    )
                );
    
                // Recipients
                $mail->setFrom('[email protected]', 'Título do e-mail, ou assunto'); // Define o remetente
                $mail->addAddress('[email protected]', 'Contato Site');             // Define o destinário
    
                // Content
                $mail->isHTML(true); // Define o formato do e-mail para HTML
                $mail->Subject = 'Contato feito pelo site';
                $mail->Body = "
                            <html>
                            <head>
                            </head>
                            <body>
                            <h2>Coloque aqui o seu assunto</h2>
    
                            <table>
                              <tr>
                                <th>Nome</th>
                                <th>E-mail</th>
                                <th>Telefone</th>
                                <th>Assunto</th>
                              </tr>
                              <tr>
                                <td>$name</td>
                                <td>$email</td>  
                                <td>$phone</td>
                                <td>$subject</td>
                              </tr>
                            </table>
    
                            <h2>Conteúdo da mensagem</h2>
    
                            <p>$message</p>
    
                            </body>
                            </html>";
                if (!$mail->send()) {
                   echo "Mailer Error: " . $mail->ErrorInfo;
                   return true;
                } else {
                   echo "Mensagem enviada";
                   return false;
                } 
            } catch (Exception $e) { // Se capturar exceção retorna false
                return false;
            }
        }
    }
    

    To send the email if your connection was successful you could use a structure similar to this:

     ...    
    
    if (mysqli_query($conn, $sql)) {
        $Mail = new Mail();
        $Mail->sendEmail('Seu nome', 'Email', 'Telefone', 'Assunto do e-mail', 'Mensagem do e-mail');
        $conn->close();
    } else {
        echo 'Erro';
    }
    

    References

    11.09.2018 / 16:10
    0

    PHPMailer is a class ready to send emails only have to integrate this code into the database code to send an email with few and simple options. (This will only work if your server is allowed to send emails through SMTP)      

     // Incluir phpmailer.php localizado na pasta x
     require_once("x/PHPMailer.php");
    
     // Inicia a classe PHPMailer
     $mail = new PHPMailer(true);
    
     $mail->IsSMTP(); // Define que a mensagem será SMTP
    
     try {
     $mail->Host = 'smtp.dominio.com'; // Endereço do servidor SMTP (Autenticação, utilize o host smtp.dominio.com)
     $mail->SMTPAuth   = true;  // Usar autenticação SMTP
     $mail->Port       = 587; //  Usar 587 porta SMTP
     $mail->Username = 'usuário de smtp'; // Usuário do servidor SMTP 
     $mail->Password = 'senha de smtp'; // Senha do servidor SMTP 
    
     //Define o remetente
     // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=    
     $mail->SetFrom('[email protected]', 'Nome'); //Seu e-mail
     $mail->AddReplyTo('[email protected]', 'Nome'); //Seu e-mail
     $mail->Subject = 'Assunto';//Assunto do e-mail
    
     //Email da responsável
     $mail->AddAddress('[email protected]', '');
    
     //Define o corpo do email
     $mail->MsgHTML('corpo do email'); 
    
     $mail->Send();
     echo "Mensagem enviada com sucesso</p>\n";
    
    //caso apresente algum erro é apresentado abaixo com essa exceção.
    }catch (phpmailerException $e) {
      echo $e->errorMessage(); //Mensagem de erro costumizada pelo PHPMailer
    }
    ?>
    
        
    11.09.2018 / 16:20
    0

    First inside the folder of my project I created a folder with the name phpmailer and inside this folder I put these two files: class.phpmailer.php and class.smtp.php , which I downloaded in the site that I left in the end of the answer.

    Then in the php file where I insert the data I have this code:

    <?php 
    require ("phpmailer/class.phpmailer.php");
    require ("phpmailer/class.smtp.php");
    
    # Inicia a classe PHPMailer
    $mail = new PHPMailer();
    
    # Define os dados do servidor e tipo de conexão
    $mail->IsSMTP(); // Define que a mensagem será SMTP
    $mail->CharSet = 'utf-8';
    $mail->Host = "smtp.gmail.com"; # Endereço do servidor SMTP, na WebHS basta usar localhost caso a conta de email esteja na mesma máquina de onde esta a correr este código, caso contrário altere para o seu desejado ex: mail.nomedoseudominio.pt
    $mail->Port = 587; // Porta TCP para a conexão
    $mail->SMTPSecure = 'tls';
    $mail->SMTPAutoTLS = false; // Utiliza TLS Automaticamente se disponível
    $mail->SMTPAuth = true; # Usar autenticação SMTP - Sim
    $mail->Username = '[email protected]'; # Login de e-mail
    $mail->Password = 'xxxxxxxx'; // # Password do e-mail
    # Define o remetente (você)
    $mail->From = "[email protected]"; # Seu e-mail
    $mail->FromName = "xxxxxxxx"; // Seu nome
    # Define os destinatário(s)
    $mail->AddAddress('[email protected]', 'xxxxxxxxx'); # Os campos podem ser substituidos por variáveis
    #$mail->AddAddress('[email protected]'); # Caso queira receber uma copia
    #$mail->AddCC('[email protected]', 'Pessoa Nome 2'); # Copia
    #$mail->AddBCC('[email protected]', 'Pessoa Nome 3'); # Cópia Oculta
    # Define os dados técnicos da Mensagem
    $mail->IsHTML(true); # Define que o e-mail será enviado como HTML
    #$mail->CharSet = 'iso-8859-1'; # Charset da mensagem (opcional)
    # Define a mensagem (Texto e Assunto)
    $mail->Subject = "Teste"; # Assunto da mensagem
    $mail->Body = "xxxxxxxxxxxxxxx";
    $mail->AltBody = "Este é o corpo da mensagem de teste, somente Texto! \r\n :)";
    
    # Define os anexos (opcional)
    #$mail->AddAttachment("c:/temp/documento.pdf", "documento.pdf"); # Insere um anexo
    # Envia o e-mail
    $enviado = $mail->Send();
    
    # Limpa os destinatários e os anexos
    $mail->ClearAllRecipients();
    $mail->ClearAttachments();
    
    $data = isset($_POST["DataRegisto"]) ? $_POST["DataRegisto"] : ''; 
    $contacto = isset($_POST["Contacto"]) ? $_POST["Contacto"] : ''; 
    $telefone = isset($_POST["Telefone"]) ? $_POST["Telefone"] : ''; 
    $crianca = isset($_POST["NomeCrianca"]) ? $_POST["NomeCrianca"] : ''; 
    $nascimento = isset($_POST["DataNasc"]) ? $_POST["DataNasc"] : ''; 
    $visita = isset($_POST["Visita"]) ? $_POST["Visita"] : ''; 
    $datavisita = isset($_POST["DataVisita"]) ? $_POST["DataVisita"] : ''; 
    $observacao1 = isset($_POST["Observacao1"]) ? $_POST["Observacao1"] : ''; 
    
    $sql = "INSERT INTO InscricoesInf ('DataRegisto','Contacto','Telefone','NomeCrianca','DataNasc','Visita','DataVisita','Observacao1') 
    VALUES ('$data','$contacto','$telefone','$crianca','$nascimento','$visita','$datavisita','$observacao1')"; 
    
    if ($conn->query($sql)) { 
    if ($enviado) {
    echo "E-mail enviado com sucesso!";
    } else {
    echo "Não foi possível enviar o e-mail.";
    echo "<b>Informações do erro:</b> " . $mail->ErrorInfo;
    }
    
    } else {
       // get the error, throw a message...
    }
    $conn->close();
    
    ?>
    

    And so send the email right. In the content of the message have the possibility to improve creating table or whatever is more suitable for what they want.

    I also leave here the link with the following tutorial:

    link

        
    13.09.2018 / 16:07