O script abaixo funciona normalmente quando o e-mail é recebido pelo google mail. Agora quando o e-mail é do yahoo ou da microsoft, a mensagem é recebida, porém o anexo dá erro ao baixar. O que pode estar ocorrendo ? o código está errado ?
<?php
$nome = filter_input(INPUT_POST,'nome');
$email = filter_input(INPUT_POST,'email');
$msg = filter_input(INPUT_POST,'msg');
$arquivo = $_FILES['arquivo'];
$arquivo_nome = $_FILES['arquivo']['name'];
$arquivo_temporario = $_FILES['arquivo']['tmp_name'];
$arquivo_tipo = $_FILES['arquivo']['type'];
$arquivo_tamanho = $_FILES['arquivo']['size'];
$para = "email1@google.com,email2@outlook.com,@email3@yahoo.com";
$assunto = "Envio de Arquivo";
$remetente = "Hélio Sander<dev@meuservidor.com.br>";
$boundary= md5(time());
$cabecalhos = "MIME-Version:1.0\n";
$cabecalhos.= "From: $remetente\n";
$cabecalhos.= "Reply-to: $remetente\n";
$cabecalhos.= "Content-type:multipart/mixed; boundary =\"$boundary\"\n";
$corpo_mensagem = "
Formulário de Contato<br>
Nome: $nome<br>
Assunto: $assunto<br>
Mensagem: $msg<br>
";
if(file_exists($arquivo_temporario)){
$a = fopen($arquivo_temporario,"r");
$anexo = fread($a,$arquivo_tamanho);
$anexo = base64_encode($anexo);
$anexo = chunk_split($anexo);
fclose($a);
$mensagem = "--$boundary\n";
$mensagem .= "Content-Type: text/html; charset=\"utf8\"\n";
$mensagem .= "$corpo_mensagem\n";
$mensagem .= "--$boundary\n";
$mensagem .= "Content-Type:$arquivo_tipo\n";
$mensagem .= "Content-Disposition: attachment; filename=$arquivo_nome\n";
$mensagem .= "Content-Transfer-Encoding: base64\n";
$mensagem .= "$anexo\n";
}
else{
$mensagem = "Content-Type:text/html; charset=\"utf-8\"\n";
$mensagem .= "$corpo_mensagem\n";
}
mail($para,$assunto,$mensagem,$cabecalhos);
echo "Mensagem Enviada com sucesso!";