Hoje gostaria de implementar no nosso Blog um assunto simples, porém, de grande importância: Envio de Ficheiros por Formulário Para Email.
Quem utiliza o PHP de forma profissional, certamente já encontrou algum cliente com necessidade de enviar ficheiro por formulário (especialmente gráficas que precisam receber ficheiro em formato do Corel ou Photoshop e muitas vezes, esses ficheiros não chegam por email, por causa de seu tamanho).
Através desta solução, você poderá implementar o script em seu site e resolver este problema!
Como fazemos em todas as nossas matérias, em anexo temos disponível os ficheiros para que tu possa estudar e testar a matéria que estamos lhe explicando.
Formulário Em HTML
Antes de partirmos para a programação, é importante analisar o formulário que vamos preencher para enviar o ficheiro. Por isso, abra o ficheiro index.php (disponível no arquivo em anexo – conforme o código e imagem a seguir).
<html>
<head>
<title>.:: WebMaster.PT :: Enviando Ficheiros ::.</title>
</head>
<body>
<table>
<form action='envia_email.php' method='post' enctype='multipart/form-data'>
<tr>
<td>Nome:</td>
<td><input type='text' name='nome'></td>
</tr>
<tr>
<td>E-mail:</td>
<td><input type='text' name='email'></td>
</tr>
<tr>
<td>Assunto:</td>
<td><input type='text' name='assunto'></td>
</tr>
<tr>
<td>Mensagem:</td>
<td><textarea name='msg' cols='30' rows='5'></textarea></td>
</tr>
<tr>
<td>Ficheiro:</td>
<td><input type='file' name='arquivo'></td>
</tr>
<tr>
<td><input type='submit' value='Enviar'></td>
</tr>
</form>
</table>
</body>
</html>
Copie e cole os ficheiros disponíveis em anexo em seu Servidor.
Preencha os dados disponíveis no formulário e selecione o ficheiro a ser enviado (conforme a imagem a seguir).
Após preencher todos os dados, clique no botão Enviar para efetuar o envio da mensagem.
Feito isso, a mensagem será enviada com sucesso.
OBS.: Não esqueça de alterar o email de recebimento nas linhas 22 e 28 do ficheiro “envia_email.php”.
Veja na imagem a seguir o exemplo de recebimento:
Script De Envio Em PHP
Vamos analisar um pouco mais sobre o ficheiro “envia_email.php”.
----- Linha 3 a linha 6 -----
$nome = $_POST['nome'];
$email = $_POST['email'];
$assunto = $_POST['assunto'];
$msg = $_POST['msg'];
No trecho acima, recebemos as variáveis do ficheiro “index.php”.
OBS.: Não trouxemos o ficheiro, pois pretendemos fazer abaixo.
----- Linha 8 -----
$corpo = "Nome: $nome<br>E-mail: $email<br>Mensagem: $msg";
Através da linha acima, traremos os campos necessários para a apresentação do conteúdo em tela.
OBS.: Trata-se de uma apresentação simples e objetiva. Caso queira melhorar esta apresentação, apenas comente a linha 8 e insira o script abaixo logo na linha a seguir:
$corpo = "
<center><table width='500' border='0' cellspacing='1' cellpadding='4' bgcolor='#4a66a3'>
<tr>
<td bgcolor='white' valign='top'><img src='IMAGEM DO TOPO' border='0'>
<link rel='important stylesheet' href='chrome://messenger/skin/messageBody.css'>
<style type='text/css' media='screen'>
<!-- td { color: #069; font-size: 8pt; font-family: Arial, Verdana, Arial, Helvetica, sans-serif } --></style>
<br>
<p align='justify'><STRONG>Prezado Administrador</STRONG>, <br><br>
Recebemos através do site SEUSITE.COM.PT a mensagem abaixo:<br>
<br>
<b>Nome:</b> $nome<br>
<b>EMail:</b> $email<br>
<b>Mensagem:</b> <br>$msg<br><br>
Atenciosamente,<br><br>
Central de Relacionamentos<br>
<b>Sua Empresa ©</b><br>
</font> <br>
<b><font color='#7694CB' size='1' face='Verdana, Arial, Helvetica, sans-serif'>
:: Politica de Privacidade::<br>
</font></b> <font color='#7694CB' size='1' face='Verdana, Arial, Helvetica, sans-serif'>
O envio e recebimento de nossas mensagens procura estar alinhado com o Código de Ética Anti-SPAM que objetiva reger e orientar a comunicação institucional, comercial e publicitária enviada sob a forma de mensagens eletrônicas.</font> <br>
<hr size='1'>
<font size='1' face='Verdana, Arial, Helvetica, sans-serif'>
Temos a forte convicção de que o relação entre cliente e empresa deve ser marcada pelo conceito de parceria, fortalecendo o vínculo estabelecido em bases de confiança e apoio mútuo.</font>
</td></tr></table></center>";
OBS.: Altere informações como “Sua Empresa”, “Imagem” para personalizar este trecho do código.
----- Linha 10 a linha 16 -----
if (($fp = fopen($_FILES['arquivo']['tmp_name'],"rb")))
{
$anexo = fread($fp,filesize($_FILES['arquivo']['tmp_name']));
$anexo = base64_encode($anexo);
fclose($fp);
$anexo = chunk_split($anexo);
}
O trecho acima trata o recebimento do ficheiro que está sendo enviado.
----- Linha 17 a linha 25 -----
if ($anexo)
{
$mensagem = "--$bound\nContent-type: text/html\nContent-Transfer-Encoding: 7bit\n\n$corpo\n\n"
. "--$bound\nContent-type: $_FILES[arquivo][type]\nContent-Disposition: attachment; filename=" . $_FILES['arquivo']['name']
. "\nContent-Transfer-Encoding: base64\n\n$anexo\n"
. "--$bound\r\n";
mail("seuemail@webmaster.pt",$assunto,$mensagem,"From: $email\nMIME-Version: 1.0\nContent-type: multipart/mixed;
boundary=\"$bound\"");
print("Mensagem Enviada com Sucesso!");
//print($fp);
}
Se houver ficheiro a ser enviado, o sistema efetuará o envio para a conta de email acima descrita, (para o correto funcionamento, onde está escrito “seuemail@webmaster.pt”, altere para a sua conta de email).
----- Linha 26 a linha 30 -----
else
{
mail("seuemail@webmaster.pt",$assunto,$corpo,"From: $email\nContent-type: text/html");
print("Mensagem Enviada com Sucesso - Sem Anexo");
}
Se não houver ficheiro em anexo, o sistema efetuará o envio para a caixa de mensagens acima descrita sem o ficheiro, (para o correto funcionamento, onde está escrito “seuemail@webmaster.pt”, altere para a sua conta de email).
Trata-se de um script simples e poderá ser modificado de acordo com suas necessidades.
Ficamos por aqui em mais uma matéria! Esperamos tê-lo ajudado em algo…
Envie-nos suas dúvidas e dê sugestões para as próximas matérias! Nosso compromisso é lhe ajudar!
Download do código fonte utilizado neste tutorial: Envio Ficheiros Por Formulário Para Email [4]