Sending attachment php mail function

Asked

Viewed 767 times

1

Good afternoon guys, I always use Phpmailer for sending emails, but I don’t know why this time I couldn’t configure on the server. So I’m using the code below to send and the question is that if you do not put the headers it sends the messages with the POST data but will not send the attachment correctly and if I put the headers it sends only the image, I do not know what is wrong, I have tried everything, follows the code, if anyone can guide me , I thank from now!


$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 ) );
  }


1 answer

0

For my customers I use so, Voce can adapt in your 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");
}



?>
  • Thank you, but as I said this problem on the server that is not accepting to use phpmailer, but I fix the problem of that, thank you

Browser other questions tagged

You are not signed in. Login or sign up in order to post.