Enviando Anexo com a função mail();


Muitos usam a função mail somente para

enviar e-mails, mas nem imaginam que é possível
enviar anexos com esta função.

vamos ao que interessa:

Boundary é a marcação que o programa de email vai
levar em conta na hora da separação das partes do
email. No corpo do email ele é identificado como ‘–’ mais o boundary!

$boundary = strtotime(’NOW’);

$headers = “From: Eu \n”;
$headers .= “MIME-Version: 1.0\n”;
$headers .= “Content-Type: multipart/mixed; boundary=\”" . $boundary . “\”\n”;

$msg = “–” . $boundary . “\n”;
$msg .= “Content-Type: text/plain; charset=\”iso-8859-1\”\n”;
$msg .= “Content-Transfer-Encoding: quoted-printable\n\n”;

$msg .= “Aqui eu escrevo o texto do email\n”;

$msg .= “–” . $boundary . “\n”;
$msg .= “Content-Transfer-Encoding: base64\n”;
$msg .= “Content-Disposition: attachment; filename=\”imagem.gif\”\n\n”;

/*Esta parte define a imagem em si! Primeiramente eu envio os
identificadores de anexo, com o nome do anexo. Mais
embaixo, eu pego o conteúdo do arquivo ( readfile
(”imagem.gif”); ) e o encripto com o base64 (formato
padrão dos anexos no email!).

É nessa parte que tem que se tomar cuidado, pois pelo
RFC as linhas do email não podem ser muito grandes.
Por isso o FOR “quebra” o conteudo do arquivo em
pedaços de 76 caracteres!*/

ob_start();
readfile(”imagem.gif”);
$enc = ob_get_contents();
ob_end_clean();

$msg_temp = base64_encode($enc). “\n”;
$tmp[1] = strlen($msg_temp);
$tmp[2] = ceil($tmp[1]/76);

for ($b = 0; $b <= $tmp[2]; $b++) {
$tmp[3] = $b * 76;
$msg .= substr($msg_temp, $tmp[3], 76) . “\n”;
}

unset($msg_temp, $tmp, $enc);

mail(”para@email.com.br”, “Assunto”, $msg, $headers);

?>

Qualquer dúvida…
andrey@andrey.eti.br

4 Responses to “Enviando Anexo com a função mail();”

  1. Mauricio Says:

    Andrey,

    Boa Noite…desculpe o encomodo..é que estou iniciando no php e estou fazendo um formulário onde tem um campo com a data de nascto e outro com a idade..minha duvida é a seguinte.

    1) como posso fazer a função de forma que quando é digitado a data de nascimento…automaticamente a idade aparece.

    2) qual a função que coloco no campo idade para buscar a função citada no item 1)

    desde já agradeço sua atenção

    Obrigado

  2. Andrey Pedro Lefkum Says:

    Mauricio,

    sua resposta está em:

    http://www.andrey.eti.br/?p=152

    Att.,
    Andrey Pedro Lefkum

  3. Pedro Says:

    utilizei o codigo acima e a imagem não aparce no email, aparece só numeros e letras

    email que aperece:

    –1171868400Content-Type: text/plain; charset=”iso-8859-1″Content-Transfer-Encoding: quoted-printable Aqui eu escrevo o texto do email–1171868400Content-Transfer-Encoding: base64Content-Disposition: attachment; filename=”email_publicidade/frente1.gif” R0lGODlhlASyCfcAABMUFh8aFxgaGx0fIR4hIyIkJiksLiYoKistMjMtNS4yNSk3OjQ6PD07OjU0OjIvLCIeG0U6O0wyLWkzLDRGOip0O05JN3ZZMzg9Qyg9Rz07b1I2RVgseEgjb2g5f3Q5czxCRTxFSjlaWy1HTjpXZTxjYzFuTkJGS0RKTExLSUpMTUdFREpOU0ZLU0tTV1lYVlJVW1ZZWVNOTGZVUW5x

    …. e muitas mais letras e numeros….

    o que estara mal?

  4. Andrey Pedro Lefkum Says:

    Opa!

    Tente colocar a imagem na mesma pasta do script, ok?

Leave a Reply


This is a free Wordpress template provided by Mathew Browne | Web Design | SEO