Problem - Form HTML + PHP does not send attachment

0

I need to make an application form for a web page and I need this form to send the information entered by the user and also to attach the attached file. What is happening is that, after testing with my e-mail address on the recipient, I can receive all the information entered except the attachment. I will put the code that processes this form and I ask you for help to understand why the file is not being sent.

HTML

<div class="container-fluid">
    <div class="row">
      <div class="col-sm-10 col-sm-offset-1 col-xs-12">
        <div class="panel panel-default text-center">
          <div class="panel-heading">
            <h1>Recrutamento</h1>
          </div>
          <div class="panel-body">
            <br />
            <p>Se gostava de trabalhar connosco envie-nos a sua candidatura preenchendo este formulário.</p>
            <br />
            <form id="form-contacto" method="POST" enctype="multipart/form-data" action="mail/mail_recrut.php">
                    <div class="row">
                        <div class="col-sm-12 form-group">
                            <p class="text-top-rh">Que tipo de candidatura quer fazer?</p>
                  <div class="checkbox" style="text-align: left">
                    <input class="form-control" name="cand" placeholder="Ex: Colaborador Interno ou Perito Externo" type="text" required>
                            </div>
                        </div>
                    </div>
                    <div class="row">
                <div class="col-sm-12 form-group">
                  <input class="form-control" name="nome" placeholder="Nome" type="text" required>
                </div>
              </div>
              <div class="row">
                <div class="col-sm-12 form-group">
                  <input class="form-control" name="email" placeholder="E-mail" type="email" required>
                </div>
              </div>
              <div class="row">
                <div class="col-sm-6 form-group">
                  <input class="form-control" name="tel" placeholder="Número de telefone" type="number">
                </div>
                <div class="col-sm-6 form-group">
                  <input class="form-control" name="pai" placeholder="PAI/20XX/XXXX" type="text">
                </div>
              </div>
              <div class="row">
                <div class="col-sm-6 form-group">
                  <input class="form-control" name="zona_resid" placeholder="Zona de Residência" type="text">
                </div>
                <div class="col-sm-6 form-group">
                  <input class="form-control" name="zona_act" placeholder="Zona de Actuação" type="text">
                </div>
              </div>
              <div class="row">
                <div class="col-sm-12 form-group">
                  <textarea class="form-control" name="mensagem" placeholder="Apresentação" type="text" rows="5"></textarea>
                </div>
              </div>
              <div class="row">
                <div class="col-sm-12 form-group"  style="text-align: left">
                  <label>Anexar Curriculum vitae:</label>
                </div>
              </div>
              <div class="row">
                <div class="col-sm-12 form-group">
                  <input name="arquivo" type="file" class="form-control-file">
                </div>
              </div>
            </div>
          <div class="panel-footer">
            <h3>Envie a sua candidatura</h3>
            <input class="btn btn-lg" type="submit" name="btn_enviar" value="Enviar"></input>
          </div>
          </form>
        </div>
      </div>
    </div>
  </div>

PHP

<?php
//pego os dados enviados pelo formulario
$para = "[email protected]";
$cand = $_POST["cand"];
$nome = $_POST["nome"];
$email = $_POST['email'];
$tel = $_POST['tel'];
$pai = $_POST['pai'];
$zona_resid = $_POST['zona_resid'];
$zona_act = $_POST['zona_act'];
$assunto = "Candidatura enviada a partir de k.pt";


//Definição da  mensagem que vai ser enviado no e-mail

$arquivo = isset($_FILES["arquivo"]) ? $_FILES["arquivo"] : FALSE;
if(file_exists($arquivo["mail_temp"]) and !empty($arquivo)){
$fp = fopen($_FILES["arquivo"]["mail_temp"],"rb");
$anexo = fread($fp,filesize($_FILES["arquivo"]["mail_temp"]));
$anexo = base64_encode($anexo);
fclose($fp);
$anexo = chunk_split($anexo);
$boundary = "XYZ-" . date("dmYis") . "-ZYX";
$mensagem = "--$boundary\n";
$mensagem .= "<br>  <strong>Tipo de Candidatura: </strong>".$cand;
$mensagem .= "<br>";
$mensagem .= "<br> <strong>Nome:  </strong>".$nome;
$mensagem .= "<br>";
$mensagem .= "<br>  <strong>E-mail: </strong>".$email;
$mensagem .= "<br>";
$mensagem .= "<br>  <strong>Telefone: </strong>".$tel;
$mensagem .= "<br>";
$mensagem .= "<br>  <strong>PAI: </strong>".$pai;
$mensagem .= "<br>";
$mensagem .= "<br>  <strong>Zona de Residência: </strong>".$zona_resid;
$mensagem .= "<br>";
$mensagem .= "<br>  <strong>Zona de Atuação: </strong>".$zona_act;
$mensagem .= "<br>";
$mensagem .= "<br> <strong>Mensagem: </strong>".$_POST['mensagem'];
$mensagem .= "Content-Transfer-Encoding: 8bits\n";
$mensagem .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; //plain
$mensagem .= "$mensagem\n";
$mensagem .= "--$boundary\n";
$mensagem .= "Content-Type: ".$arquivo["type"]."\n";
$mensagem .= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n";
$mensagem .= "Content-Transfer-Encoding: base64\n\n";
$mensagem .= "$anexo\n";
$mensagem .= "--$boundary--\r\n";
$headers = "MIME-Version: 1.0\n";
$headers .= "From: \"$nome\" <$email>\r\n";
$headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";
$headers .= "$boundary\n";
//envio o email com o anexo
mail($para,$assunto,$mensagem,$headers);
echo"Email enviado com Sucesso!";
}
//se não tiver anexo
else{
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: \"$nome\" <$email>\r\n";
//envia o email sem anexo
mail($para,$assunto,$mensagem, $headers);
echo"Email enviado com Sucesso!";
}
?>


Alguém me sabe dizer o que se passa de errado aqui?\

Hug, Juliana

    
asked by anonymous 02.10.2017 / 13:37

2 answers

0

Just switch:

require_once('class.phpmailer.php');

By:

require_once('PHPMailerAutoload.php');

    
02.10.2017 / 13:45
0

I must be really dumb! I did with PHP mailer but now I even stopped sending email at all ... :( There is something wrong.

      <!-- Formulário RH -->
  <div class="container-fluid">
    <div class="row">
      <div class="col-sm-10 col-sm-offset-1 col-xs-12">
        <div class="panel panel-default text-center">
          <div class="panel-heading">
            <h1>Recrutamento</h1>
          </div>
          <div class="panel-body">
            <br />
            <p>Se gostava de trabalhar connosco envie-nos a sua candidatura preenchendo este formulário.</p>
            <br />
            <form id="form-contacto" method="POST" enctype="multipart/form-data" action="?acao=enviar">
                    <div class="row">
                        <div class="col-sm-12 form-group">
                            <p class="text-top-rh">Que tipo de candidatura quer fazer?</p>
                  <div class="checkbox" style="text-align: left">
                    <input class="form-control" name="cand" placeholder="Ex: Colaborador Interno ou Perito Externo" type="text" required>
                            </div>
                        </div>
                    </div>
                    <div class="row">
                <div class="col-sm-12 form-group">
                  <input class="form-control" name="nome" placeholder="Nome" type="text" required>
                </div>
              </div>
              <div class="row">
                <div class="col-sm-12 form-group">
                  <input class="form-control" name="email" placeholder="E-mail" type="email" required>
                </div>
              </div>
              <div class="row">
                <div class="col-sm-6 form-group">
                  <input class="form-control" name="tel" placeholder="Número de telefone" type="number">
                </div>
                <div class="col-sm-6 form-group">
                  <input class="form-control" name="pai" placeholder="PAI/20XX/XXXX" type="text">
                </div>
              </div>
              <div class="row">
                <div class="col-sm-6 form-group">
                  <input class="form-control" name="zona_resid" placeholder="Zona de Residência" type="text">
                </div>
                <div class="col-sm-6 form-group">
                  <input class="form-control" name="zona_act" placeholder="Zona de Actuação" type="text">
                </div>
              </div>
              <div class="row">
                <div class="col-sm-12 form-group">
                  <textarea class="form-control" name="mensagem" placeholder="Apresentação" type="text" rows="5"></textarea>
                </div>
              </div>
              <div class="row">
                <div class="col-sm-12 form-group"  style="text-align: left">
                  <label>Anexar Curriculum vitae:</label>
                </div>
              </div>
              <div class="row">
                <div class="col-sm-12 form-group">
                  <input name="arquivo" type="file" class="form-control-file">
                </div>
              </div>
            </div>
          <div class="panel-footer">
            <h3>Envie a sua candidatura</h3>
            <input class="btn btn-lg" type="submit" name="btn_enviar" value="Enviar"></input>
          </div>
          </form>
        </div>
      </div>
    </div>
  </div>

  <?php
  use PHPMailer\PHPMailer\PHPMailer;
  use PHPMailer\PHPMailer\Exception;

    if($_GET['acao'] == 'enviar'){
     $cand        = $_POST['cand'];
     $nome        = $_POST['nome'];
     $email       = $_POST['email'];
     $tel         = $_POST['tel'];
     $pai         = $_POST['pai'];
     $zona_resid  = $_POST['zona_resid'];
     $zona_act    = $_POST['zona_act'];
     $assunto     = "Candidatura enviada a partir de Brick.pt";
     $arquivo     = $_FILES["arquivo"];

     $corpoMSG = "<strong>Candidatura para:</strong> $cand<br>
                  <br />
                  <strong>Nome:</strong> $nome<br>
                  <br />
                  <strong>E-mail:</strong> $mail<br>
                  <br />
                  <strong>Telefone:</strong> $tel<br>
                  <br />
                  <strong>PAI:</strong> $pai<br>
                  <br />
                  <strong>Zona de Residência:</strong> $zona_resid<br>
                  <br />
                  <strong>Zona  de Atuação:</strong> $zona_act<br>";
     // chamada da classe
     require 'php/src/Exception.php';
     require 'php/src/PHPMailer.php';
     require 'php/src/SMTP.php';
     require_once('PHPMailerAutoload.php');
     // instanciando a classe
     $mail   = new PHPMailer();
     // email do remetente
     $mail->SetFrom('$email', 'remetente');
     // email do destinatario
     $address = "[email protected]";
     $mail->AddAddress($address, "destinatario");
     // assunto da mensagem
     $mail->Subject = $assunto;
     // corpo da mensagem
     $mail->MsgHTML($corpoMSG);
     // anexar arquivo
     $mail->AddAttachment($arquivo['tmp_name'], $arquivo['name']  );

     if(!$mail->Send()) {
       echo "Erro: " . $mail->ErrorInfo;
      } else {
       echo "Mensagem enviada com sucesso!";
      }
    }
?>

As it says on page linhadecomando.com/php/.... - Fox.11 2 hours ago, I unzipped the zip files in the folder I have on the server ...

    
02.10.2017 / 15:53