<?php
// evitar email injection
function clean_string($string) {
$bad = array(
"content-type",
"bcc:",
"to:",
"cc:",
"href"
);
return str_replace($bad, "", $string);
}
//variáveis
$status = false;
$nome = clean_string($_POST['nome']);
$email = clean_string($_POST['email']);
$mensagem = "Enviado pelo <strong>formulário de contato</strong>";
$destino = "seuemail@seuhost.com.br"; //E-mail do destinatário
$assunto = "Contato"; // Assunto do E-mail
// se o nome temporário do arquivo estiver vazio, ele não foi enviado
if (empty($_FILES['anexo']['tmp_name'])) {
//cabeçalho
$headers = "Content-type: text/html; charset=utf-8\r\n";
$headers .= "From: $nome <$email>\r\n"; //E-Mail do destinatário
$headers .= "Reply-To: $email\r\n";
//envio
$status = mail ($destino, $assunto, $observacao, $headers);
} else {
// inicialmente, abre o arquivo e converte ele para base64
$file = $_FILES['anexo']['tmp_name'];
$originalFile = $_FILES['anexo']['name'];
$file_size = filesize($file);
$handle = fopen($file, "rb");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
// separador aleatório necessário para enviar conteúdo mixed
$separator = md5(time());
// fim de linha (usando uma constante do PHP para fim de linha)
$eol = PHP_EOL;
// cabeçalho principal (multipart obrigatório)
$headers = "From: $nome <$email>" . $eol;
$headers .= "MIME-Version: 1.0" . $eol;
$headers .= "Content-Type: multipart/mixed; boundary=\"" . $separator . "\"" . $eol . $eol;
$headers .= "Content-Transfer-Encoding: 8bit" . $eol;
$headers .= "This is a MIME encoded message." . $eol . $eol;
// mensagem (apenas formato html aqui)
$headers .= "--" . $separator . $eol;
$headers .= "Content-Type: text/html; charset=\"utf-8\"" . $eol;
$headers .= $mensagem . $eol . $eol;
// anexo usando o nome do arquivo original
$headers .= "--" . $separator . $eol;
$headers .= "Content-Type: application/octet-stream; name=\"" . $originalFile . "\"" . $eol;
$headers .= "Content-Transfer-Encoding: base64" . $eol;
$headers .= "Content-Disposition: attachment" . $eol . $eol;
$headers .= $content . $eol . $eol;
$headers .= "--" . $separator . "--";
// enviar email
$status = mail($destino, $assunto, "", $headers);
}
if ($status) {
echo "Envio com sucesso";
} else {
echo "Ocorreu um erro no envio";
}