Send mail function attachment php

1

Good afternoon, I always use PHPMailer to send emails, but I do not know why this time I could not configure it on the server. So I am using the code below to send and the question is if not put the headers it sends the messages with the POST data but it will not send the attachment correctly and if I put the headers it only sends the image, I do not know what it's happening wrong, I've tried everything, follow the code, if anyone can guide me, thank you right away!


$arquivo = $_FILES["attachment"];


$boundary = "XYZ-".date("dmYis")."-ZYX";
$fp = fopen($arquivo["tmp_name"], "rb"); // abre o arquivo enviado
$anexo = fread($fp, filesize($arquivo["tmp_name"])); // calcula o tamanho
$anexo = base64_encode($anexo); // codifica o anexo em base 64
fclose($fp); // fecha o arquivo

// cabeçalho do email
$headers  = "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; ";
$headers .= "boundary=".$boundary."\r\n";
$headers .= "$boundary\n";

// email
$mensagem  = "--$boundary\n";
$mensagem .= "Content-Type: text/html; charset='utf-8'\n";
$mensagem .= "Nome:  $name \r\n";
$mensagem .= "E-mail:  $email \r\n";
$mensagem .= "Cidade:  $city \r\n";
$mensagem .= "Estado:  $state \r\n";
$mensagem .= "Mensagem:  $message \r\n";
$mensagem .= "--$boundary \n";

if( empty ($arquivo[0] ) ){
$mensagem .= "Content-Type: " .$arquivo["type"]. "; name=\"\" " .$arquivo['name']. " \n";
$mensagem .= "Content-Transfer-Encoding: base64 \n";
$mensagem .= "Content-Disposition: attachment; filename=\"\" " .$arquivo['name']. " \r\n";
$mensagem .= "$anexo \n";
$mensagem .= "--$boundary \n";
 }
// enviar o email

$sendMail = mail($sender_email, $default_subject, $mensagem, $headers);

  if( !$sendMail ){
    echo json_encode( array( 
      'alert'  => 'error',
      'message' => $error_message ));
  } else {
    echo json_encode( array( 'alert' => 'success' , 'message' => $success_message ) );
  }


    
asked by anonymous 08.11.2017 / 18:34

1 answer

0

For my clients I use this way, you can adapt in yours that I'm sure will work yes.

<?php


$nome = $_POST['nome'];
$email = $_POST['email'];
$telefone = $_POST['telefone'];
$endereco = $_POST['endereco'];
$idade = $_POST['idade'];
$formacao = $_POST['formacao'];
$formacaox = $_POST['formacaox'];
$horariod = $_POST['horariod'];
$salario = $_POST['salario'];
$apresentacao = $_POST['apresentacao'];
$obs = $_POST['obs'];
$exp = $_POST['exp'];
$ult = $_POST['ult'];


$nomes=$_FILES['files']['name'];
$nome_temp= $_FILES['files']['tmp_name'];
$tamanho= $_FILES['files']['size'];

$meudiretorio = "/tmp/";

move_uploaded_file($nome_temp, $meudiretorio.$nomes);


require 'phpmailer/PHPMailerAutoload.php';

$mail = new PHPMailer();

$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->SMTPDebug = 0;
$mail->Host = "ssl://mail.servidor.com.br"; // Seu endereço de host SMTP
$mail->SMTPAuth = true; // Define que será utilizada a autenticação -  Mantenha o valor "true"
$mail->Port = 465; // Porta de comunicação SMTP - Mantenha o valor "587"
$mail->SMTPSecure = "ssl"; // Define se é utilizado SSL/TLS - Mantenha o valor "false"
$mail->SMTPAutoTLS = false; // Define se, por padrão, será utilizado TLS - Mantenha o valor "false"
$mail->Username = '[email protected]'; // Conta de email existente e ativa em seu domínio
$mail->Password = '123456'; // Senha da sua conta de email
 
// DADOS DO REMETENTE
$mail->Sender = "[email protected]"; // Conta de email existente e ativa em seu domínio
$mail->From = "[email protected]"; // Sua conta de email que será remetente da mensagem
$mail->FromName = "Formulario de Contato"; // Nome da conta de email
 
// DADOS DO DESTINATÁRIO
$mail->AddAddress('[email protected]', 'Nome - Recebe1'); // Define qual conta de email receberá a mensagem
//$mail->AddAddress('[email protected]'); // Define qual conta de email receberá a mensagem
//$mail->AddCC('[email protected]'); // Define qual conta de email receberá uma cópia
//$mail->AddBCC('[email protected]'); // Define qual conta de email receberá uma cópia oculta
//
$mail->Subject = "Cv formulario site";
$mail->msgHTML("<html>De: {$nome}<br>Email: {$email} <br>Telefone: {$telefone} <br>Endereco: {$endereco} <br> Idade: {$idade} <br>Formacao: {$formacao} <br> Formacao Extra: {$formacaox} Horario Disponivel: {$horariod} <br> Salario: {$salario} <br> Apresentacao: {$apresentacao} <br> Observacao: {$obs} <br> Experiencia: {$exp} <br> Ultima Remuneracao: {$ult}  </html>");
$mail->addAttachment($meudiretorio.$nomes);
$mail->AltBody = "De: {$nome}\nEmail: {$email}\nTelefone: {$telefone}\nEndereco: {$endereco}\n Idade: {$idade}\nFormacao {$formacao}\n Formacao Extra: {$formacaox}\n Horario Disponivel: {$horariod}\n Salario: {$salario}\n Apresentacao: {$apresentacao}\n Observacao: {$obs} \n Experiencia: {$exp} \n Ultima Remuneracao: {$ult}";

if ($mail->send()) {
	
	header("Location: sucesso.php");
}else {
 echo "Não foi possível enviar o e-mail.";
  echo "<b>Detalhes do erro:</b> " . $mail->ErrorInfo;
  header("Location: contato.php");
}



?>
    
08.11.2017 / 18:50