Submit Resume formatted with php

0

I am creating a form for a company for resume registration and it is already working, but I did to generate the resume and print, someone could tell me how it would be done so that when you click submit, it sends this file to a certain email formatted already. The code I'm using is just below.

<?php
//Captura o modelo selecionado
$modelo = $_POST['modelo'];

//Verifica se o cliente selecionou uma foto no formulário ou deixou em branco
if($_FILES['foto']['size'] > 0){
    //Obtém o conteúdo da imagem (conteúdo binário)
    $conteudo = file_get_contents($_FILES['foto']['tmp_name']);
    
    //Obtém o tipo da imagem enviada (jpg, png)
    $tipo = pathinfo($_FILES['foto']['tmp_name'], PATHINFO_EXTENSION);
    
    //Gera a imagem em base64 para poder colocar na tag <img> do curriculo
    $foto = 'data:image/' . $tipo . ';base64,' . base64_encode($conteudo);
} else {
    //Se o cliente não selecionou uma foto, usamos a imagem padrão
    $foto = "img/avatar-1.png";
}

//Gera um array com os dados a serem enviados para impressão no currículo
//Cada elemento do array recebe o valor de um campo do formulário
$dados = array(
    'foto' => $foto,
    'nome' => $_POST['nome'],
    'cargo' => $_POST['cargo'],
    'endereco' => $_POST['endereco'],
    'telefone' => $_POST['telefone'],
    'email' => $_POST['email'],
    'resumo' => $_POST['resumo'],
    'formacoes' => isset($_POST['formacao-curso']) ?
                   array(
                        'cursos' => $_POST['formacao-curso'],
                        'instituicoes' => $_POST['formacao-instituicao'],
                        'conclusoes' => $_POST['formacao-conclusao']
                    ) : null, //Se o usuário não adicionou nenhuma formação, esse elemento ficará nulo
    'experiencias' => isset($_POST['experiencia-cargo']) ? 
                      array(
                        'cargos' => $_POST['experiencia-cargo'],
                        'empresas' => $_POST['experiencia-empresa'],
                        'inicios' =>  $_POST['experiencia-inicio'],
                        'fins' =>  $_POST['experiencia-fim'],
                      ) : null //Se o usuário não adicionou nenhuma experiência, esse elemento ficará nulo
);

//Carrega o arquivo referente ao modelo de currículo selecionado
//Quando faz isso, poderemos imprimir o conteúdo da variável $dados no currículo
require_once("modelos/{$modelo}.php");
    
asked by anonymous 05.09.2018 / 14:23

1 answer

0

To send e-mail with an attachment, in your case a pdf, you can use the PHPMailer class, which is nothing more than a class, or rather a library, that allows sending mail 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 contact form, but that sends an attachment.

    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
    
                $mail->addAttachment('/var/tmp/file.tar.gz');                         // Adicona anexos (só passar o arquivo, localização dele)
    
                // 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>";
                $mail->send(); // Envia o e-mail
                return true;
            } catch (Exception $e) { // Se capturar exceção retorna false
                return false;
            }
        }
    }
    

    PHPMailer documentation

    PHPMailer Forum

        
    05.09.2018 / 21:39