Nesta video aula vou ensinar enviar um E-mail com anexo usando o PHP.
Espero que gostem desta video aula.
Abraços
Boa Aula
Enviando E-mail com Anexo
OBS: Este recurso não funciona corretamente em todos os servidores.
formulario-com-anexo.php
<?php
//verifica se o formulário foi acionado
if($_GET['acao'] == 'enviar'){
//resgata o que foi enviado do formulário
$nome = $_POST['nome'];
$assunto = $_POST['assunto'];
$mensagem = $_POST['mensagem'];
$arquivo = $_FILES["arquivo"];
//para quem vai ser enviado o e-mail
$para = "seu-email@dominio.com.br";
//boundary o que identifica cada parte da mensagem
$boundary = "XYZ-".date("dmYis")."-ZYX";
$fp = fopen($arquivo["tmp_name"], "rb"); //abri o arquivo enviado
$anexo = fread($fp, filesize($arquivo["tmp_name"])); //pega sua largura
$anexo = base64_encode($anexo); //codifica para base 64
fclose($fp); //fecha a conexão
//cabeçalho da mensagem
$headers = "MIME-Version: 1.0 n";
$headers .= "Content-Type: multipart/mixed; ";
$headers .= "boundary="$boundary" rn";
$headers .= "$boundaryn";
//corpo do email
$corpoMSG = "--$boundary n";
$corpoMSG .= "Content-Type: text/html; charset="iso-8859-1" n";
$corpoMSG .= "Content-Transfer-Encoding: 8bits nn";
//mensagem enviada pelo formulário
$corpoMSG .= "<strong>Nome: </strong> $nome <br> <strong>Mensagem: </strong> $mensagem rn";
$corpoMSG .= "--$boundary n";
//Anexo
$corpoMSG .= "Content-Type: ".$arquivo["type"]."; name="".$arquivo['name']."" n";
$corpoMSG .= "Content-Transfer-Encoding: base64 n";
$corpoMSG .= "Content-Disposition: attachment; filename="".$arquivo['name']."" rn";
$corpoMSG .= "$anexo n";
$corpoMSG .= "--$boundary n";
//envia o e-mail
mail($para, $assunto, $corpoMSG, $headers);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Enviando email pelo PHP - LuizAzevedo.com.br</title>
</head>
<body>
<form action="?acao=enviar" method="post" enctype="multipart/form-data" name="form1" id="form1">
<table width="500" border="0" align="center" cellpadding="0" cellspacing="2">
<tr>
<td align="right">Nome:</td>
<td><input type="text" name="nome" id="nome" /></td>
</tr>
<tr>
<td align="right">Assunto:</td>
<td><input type="text" name="assunto" id="assunto" /></td>
</tr>
<tr>
<td align="right">Mensagem:</td>
<td><textarea name="mensagem" id="mensagem" cols="45" rows="5"></textarea></td>
</tr>
<tr>
<td align="right">Anexo: </td>
<td><input type="file" name="arquivo" id="arquivo" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Enviar" /></td>
</tr>
</table>
</form>
</body>
</html>

Viva,antes de mais obrigado pela partilha de informação contudo testei o teu script em vários servidores diferentes e o anexo chega sempre corrompido ex: Parte.1.2
A pergunta é :
Falta algum tipo de class ou existe forma de por a funcionar o script correctamente ?
Não, é apenas itos mesmo dcosta.
No meu host e em alguns outros que testei funcionou. De um amigo não funcionou. Ele teve que entrar em contato com o host para libarar. Após isto ficou ok.
Uma alternativa é usar a class PHP Mailer. Só que você não vai usar o script desta pagina. Apenas o da class mesmo.
Na web você consegue o script e ele vem com vários exemplos.
Espero que de certo.
Abraços.
Valeu pela visita.
Oi Luiz. Muito bacana este tutorial…
mas vc sabe porque não identifica quem mandou e pq a mensagem que foi escrita tb não esta chegando?
um abraço
Emmanuel isto deve ser erro seu.. Como nome de variavel errado ou coisas do tipo. Se setar as configurações corretamente ele envia com todoas informações.
Abraços
O meu também chega corrompido e como span.
Não entendi quando você aconselha entrar em contato com o meu host para liberar?
Parabéns pelo tutorial, muito bom!
Saludos desde Venezuela amigo Luiz Azevedo
Queria darle las gracias por su video, me ha ayudado mucho. Lo felicito por su gesto de compartit sus conocimientos a la comunidad. Gracias
Exitos
Ilma, tem host que bloqueia o envio de arquivos por e-mail por questão de segurança ou frescura. Um amigo meu teve que entrar em contato com o host dele para poder conseguir enviar.
A questão do spam, este tipo de script é reconhecido por alguns sistema de email como span, pois é enviado a partir de um script.
É possivel impedir ele de etnrar para caixa de spam, enviando email com SMTP. Ja fiz os teste com smtp e passou em todos os filtros de spam sem problema, não disponibilizo o código para não usarem o script para spam. Sintu muito.
Obrigado pela visita.
cara eu fiz aqui em minha aplicação e não deu erro ele envia mas o email eu não recebo (nada) eu andei em meu gmail e eu uso o servidor da empresa kinghost.com.br sera o problema com o servidor??!! gostaria que pudesse me ajudar.
obrigado!!!
Ola Wilson, eu não posso dizer que é esta empresa se não eu estaria me complicando diante dela.
Mas eu tenho um conhecido que faz parte deste host e para ele conseguir fazer muitas coisas apresenta nesta video aula e em outras, ele teve que entrar em contato com a empresa e pedir para que fosse liberado.
Ele tem até um script de enviar email pronto, que funciona no servidor deles.
Talvez entrando em contato você consiga resolver o problema ou pode ser um outro problema qualquer.
Vlw pela visita