Segue um tutorial simples e funcional para enviar email com anexo em PHP utilizando a função mail()
Página: index.html
obs: NUNCA se esqueçam de colocar o enctype=”multipart/form-data” e o método de envio precisa ser POST.
Página: enviar_email.php














Olá, eu tentei usar o codigo mais não funcionou, o script não anexou o documento. será q vc poderia me ajudar ?
Retornou algum erro ou somente não anexou o arquivo?
OLá Amigo, o anexo vem com 0k é o mesmo erro do amigo Yuhara, o que pode ser? ele chega certinho mais com 0K
Estranho, vou dar uma revisado em todo o script para ver o que pode ser…
sou novato emphp, usei o script e retornou este erro:Parse error: syntax error, unexpected T_VARIABLE in /home/allcarvi/public_html/email.php on line 198.
poderia me ajudar?
agradeço
Felipe, para poder lhe ajudar precisaria ver a página inteira… se puder me envie por email!
Caros,
estou tentando enviar email com a funcao abaixo porém nao funciona poderia verificar se existe algum erro…
while ( $lista = mysql_fetch_assoc( $q_ListaForn ) ){
$envia = mail( $lista['email'],”Solicitação de Cotação”, $v_mensagem, $v_cabec );
mysql_query(“INSERT INTO cotacao(
cot_codusuario,
cot_codfornecedor,
cot_datsolicitacao,
cot_descricao)
VALUES(
‘$v_codusuario’,
‘$lista[id_usuario]‘,
‘$v_datacotacao’,
‘$v_mensagem’)”);
}
$envia = mail($v_emailusuario,”Cópia de sua cotação enviada!”,$v_mensagem, $v_cabec);
obrigado pela ajuda
Bom, se você quer enviar um Anexo está com o código errado…
Agora, se for só para enviar um mail() simples, a sintaxe está correta… precisa checar com o seu host se está habilitado
Olá…Estou conseguindo anexar o arquivo, porém o resto da mensagem não aparece no email, tipo: nome, mensagem…
O que pode ser?
Cara, eu estou tentando usar o seu código, mas estou encontrando uma dificuldade, o arquivo anexado sempre chega vazio, sabe o motivo disso estar ocorrendo?
Pode ser algum erro de variável que você está passando, já checou isso?
Muito bom script, funcionou perfeitamente.
Parabens!!!
Danilo,
É possível enviar mais de um anexo no mesmo e-mail?
Valeu!
É possível sim, você terá que duplicar o código e alterar as variáveis
ola, copiei e colei no dreamwever e logo de cara ele informa um erro nas linhas 17, 27 e 29…
Quais erros são apresentados?
Copiei e colei o código, logo, surgiram vários erros de concatenação. Consertei, e resolvi postar : http://pastebin.com/625DxsKE ! E obrigado pelo código!
Segue correção para quem está tendo dificuldades para implementar o código dessa publicação.
Erros encontrados:
- O boundary para serparação dos arquivos deve começar com — seguido do boundary informado.
- O arquivo anexo deve estar junto do cabeçalho e não junto da mensagem.
- No php quando inicia um string com “, ao querer imprimir o caracter “, deve-se colocar \”.
- É de extrema importância, por questões de compatibilidade, finalizar uma linha com \r\n.
Danilo Iannone, meus parabéns pelo script. É de grande valia para todos.
——————————————
$nome = $_POST['nome'];
$arquivo = $_FILES["arquivo"];
// Para quem vai ser enviado o email
$para = “[E-MAIL DESTINATÁRIO]“;
// Assunto do email
$assunto = “[ASSUNTO DO EMAIL]“;
$boundary = “XYZ-”.date(“dmYis”).”-ZYX”;
$fp = fopen($arquivo["tmp_name"], “rb”); // abre o arquivo enviado
$anexo = fread($fp, filesize($arquivo["tmp_name"])); // calcula o tamanho
$anexo = base64_encode($anexo); // codifica o anexo em base 64
fclose($fp); // fecha o arquivo
// cabeçalho do email
$headers = “MIME-Version: 1.0\r\n”;
$headers .= “Content-Type: multipart/mixed; “;
$headers .= “boundary=\”$boundary\”\r\n”;
$headers .= “–$boundary\r\n”;
// email
$mensagem .= “Content-Type: text/html; charset=’utf-8′\r\n”;
$mensagem .= “Nome: $nome \r\n”;
$mensagem .= “–$boundary \r\n”;
// anexo
$file = “Content-Type: “.$arquivo["type"].”; name=\”".$arquivo['name'].”\” \r\n”;
$file .= “Content-Transfer-Encoding: base64 \r\n”;
// NA LINHA ABAIXO É IMPORTANTE COLOCAR DUAS VEZES \r\n
$file .= “Content-Disposition: attachment; filename=\”".$arquivo['name'].”\” \r\n\r\n”;
$file .= “$anexo \r\n”;
$file .= “–$boundary \r\n”;
// enviar o email
mail($para, $assunto, $mensagem, $headers.$file);