0
I need to make an application form for a web page and I need that form to send the information entered by the user and also to attach the attached file. What’s happening is that after testing with my email address, I can receive all the information entered except the attachment. I’m going to input the code that processes this form and ask you to help me understand why the file isn’t 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?\
Embrace, Juliana
Hello Juliana. I suggest using Phpmailer. Check out this link: https://www.linhadecomando.com/php/php-usando-phpmailer-para-mailsent.
– user24136
Thank you so much for the suggestion. I’ll try it on and then I’ll tell you if I can get it working :)
– Juliana Fortes