Para anexar arquivos em e-mails é preciso enviar emails MIME com várias partes. A primeira parte é o corpo do email, e normalmente é em HTML e as outras partes são os anexos.
Você também precisa criar uma string que indique a separação entre as partes, e precisa indicar o Content-Type de cada parte.
Os anexos precisam ser codificados em base64 para evitar problemas ao enviar o email.
Veja o código de exemplo:
PHP:
<?php
/**
MONTANDO EMAIL
*/
$from = "eu@meusite.com";
$to = "eu@meusite.com";
$subject = "Assunto do email";
$headers = "From: {$from}\r\nReply-To: {$from}";
/**
CRIANDO UM MARCADOR DE PARTES DO EMAIL MIME
*/
$boundary = "ReinaldoBorges".md5(date("YmdHis"));
/**
HEADERS INDICANDO QUE É UM EMAIL MIME
*/
$headers .= "\r\nMIME-Version: 1.0";
$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"{$boundary}\";";
$headers .= "\r\nContent-Transfer-Encoding: 7bit";
$headers .= "\r\nX-Mailer: PHP/".phpversion();
$msg = "";
/**
MENSAGEM HTML
*/
$msg .= "--{$boundary}\r\n";
$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";
$msg .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$msg .= "
Texto da mensagem HTML
Imagem anexada aparecendo no corpo do email:
<img src=\"cid:anexo1\"/>
E-Mail Automático enviado em ".date('d/m/Y H:i:s')."
";
$msg .= "\r\n";
$count = 0;
/**
BUSCANDO ANEXO 01
E CONVERTENDO PARA BASE64
*/
$count++;
$anexo_nome = "imagem.jpg";
$anexo = file_get_contents( $anexo_nome );
$anexo = chunk_split( base64_encode( $anexo ) );
$msg .= "--{$boundary}\r\n";
$msg .= "Content-Type: image/jpeg; name=\"{$anexo_nome}\";\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-Disposition: attachment\r\n";
$msg .= "Content-ID: \r\n\r\n";
$msg .= $imagemsg;
$msg .= "\r\n";
$msg .= "--{$boundary}--\r\n";
/**
AQUI VOCÊ PODE ACRESCENTAR QUANTOS ANEXOS QUISER
Lembre-se apenas de colocar o tipo correto em "Content-Type"
*/
/**
FIM DA MENSAGEM
*/
mail($to,$subject,$msg,$headers);
?>
/**
MONTANDO EMAIL
*/
$from = "eu@meusite.com";
$to = "eu@meusite.com";
$subject = "Assunto do email";
$headers = "From: {$from}\r\nReply-To: {$from}";
/**
CRIANDO UM MARCADOR DE PARTES DO EMAIL MIME
*/
$boundary = "ReinaldoBorges".md5(date("YmdHis"));
/**
HEADERS INDICANDO QUE É UM EMAIL MIME
*/
$headers .= "\r\nMIME-Version: 1.0";
$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"{$boundary}\";";
$headers .= "\r\nContent-Transfer-Encoding: 7bit";
$headers .= "\r\nX-Mailer: PHP/".phpversion();
$msg = "";
/**
MENSAGEM HTML
*/
$msg .= "--{$boundary}\r\n";
$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";
$msg .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$msg .= "
Texto da mensagem HTML
Imagem anexada aparecendo no corpo do email:
<img src=\"cid:anexo1\"/>
E-Mail Automático enviado em ".date('d/m/Y H:i:s')."
";
$msg .= "\r\n";
$count = 0;
/**
BUSCANDO ANEXO 01
E CONVERTENDO PARA BASE64
*/
$count++;
$anexo_nome = "imagem.jpg";
$anexo = file_get_contents( $anexo_nome );
$anexo = chunk_split( base64_encode( $anexo ) );
$msg .= "--{$boundary}\r\n";
$msg .= "Content-Type: image/jpeg; name=\"{$anexo_nome}\";\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-Disposition: attachment\r\n";
$msg .= "Content-ID: \r\n\r\n";
$msg .= $imagemsg;
$msg .= "\r\n";
$msg .= "--{$boundary}--\r\n";
/**
AQUI VOCÊ PODE ACRESCENTAR QUANTOS ANEXOS QUISER
Lembre-se apenas de colocar o tipo correto em "Content-Type"
*/
/**
FIM DA MENSAGEM
*/
mail($to,$subject,$msg,$headers);
?>