Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the acf domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u810915952/domains/romulobrasil.com/public_html/wp-includes/functions.php on line 6121
Email com vários anexos em PHP Mail() - Rômulo Brasil

Email com vários anexos em PHP Mail()

• Publicado em: fevereiro 11, 2014

Hoje me deparei com uma situação diferenciada (BUCHO) pelo menos pra mim que sei apenas o básico de PHP e a situação é seguinte, tinha um formulário de contato que precisaria enviar dois documentos em anexo.

 

Nesse código abaixo não vou explicar não porque já fiz bem comentado e ele é bem simples basta colocar que ele vai funcionar, salvo que ele precisa de se ajustar para seu formulário com o corpo de email pode ter mais compus que é só acrescentar e caso queira adicionar mais input[file] basta acrescentar mais e não precisa fazer mais nada, já que o código pegar em forma de laço todos os input[file] do documento todo.

 

[code lang=”php”]
<?php
/**
* Autor: Rômulo Brasil – romulobrasil.com
* Email com vários anexos em PHP Mail()
*/
if ($_SERVER[‘REQUEST_METHOD’]=="POST"){
//E-mail que receberar os e-mails com anexos.
$to="seu@email.com.br";

//Assunto do E-mail Enviado
$subject="Teste de anexo";

//Mensagem que irar no corpo do e-mail
$message="Texto enviado com o anexo";

//Pega o Remetente
$from = stripslashes($_POST[‘fromname’])."<".stripslashes($_POST[‘fromemail’]).">";

//Cabeçalho do E-mail
$mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";
$headers = "From: $from\r\n" .
"MIME-Version: 1.0\r\n" .
"Content-Type: multipart/mixed;\r\n" .
" boundary=\"{$mime_boundary}\"";

//Complemento da mensagem MIME que detecta o formato dos arquivos.
$message = "This is a multi-part message in MIME format.\n\n" .
"–{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";

//Laço que detecta todos os input[file]
foreach($_FILES as $userfile){
$tmp_name = $userfile[‘tmp_name’];
$type = $userfile[‘type’];
$name = $userfile[‘name’];
$size = $userfile[‘size’];

//Abre e lê o arquivo e add na variável $data
if (file_exists($tmp_name)){
if(is_uploaded_file($tmp_name)){
$file = fopen($tmp_name,’rb’);
$data = fread($file,filesize($tmp_name));
fclose($file);
$data = chunk_split(base64_encode($data));
}

//Add o arquivo a variável $message
$message .= "–{$mime_boundary}\n" .
"Content-Type: {$type};\n" .
" name=\"{$name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n";
}
} //endforeach

$message.="–{$mime_boundary}–\n";
mail($to, $subject, $message, $headers);
}
?>

<!doctype html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Email com Varios Anexos – PHP</title>
</head>
<body>

<form action="<?php echo $_SERVER[‘PHP_SELF’]; ?>" method="POST" enctype="multipart/form-data">
De: <input type="text" name="fromname" value=""> <br>
Para: <input type="text" name="fromemail" value=""> <br>
anexos: <br>
<input type="file" name="file1" value=""> <br>
<input type="file" name="file2" value=""> <br>
<input type="file" name="file3" value=""> <br>
<input type="submit" value="Enviar">
</form>

</body>
</html>
[/code]

VLW!!!