Jump to content


Photo

Email Em Html Com Imagens


  • Faça o login para participar
7 replies to this topic

#1 Alexx Ares

Alexx Ares

    Doutor

  • Usuários
  • 921 posts
  • Sexo:Masculino
  • Localidade:Santos - SP

Posted 15/06/2004, 14:49

Olá pessoal!

Para quem tem dúvidas sobre como enviar emails em HTML e com imagens no corpo da mensagem, vai um pequeno script que eu criei, com base no código fonte do próprio Outlook.

O script se destina a envio de mensagens mais "bonitas" e está configurado ( e testado ) para ser recebido no Outlook, BOL, IG ( o IG separa as imagens, mas isso é coisa dele mesmo... ), Hotmail ( As vezes, não sei porque, o Hotmail também separa as imagens... mesmo enviando do próprio Outlook! ) e outros webmails como o Uebimiau, etc..
Comentários no script.

Espero que aproveitem!

// Script criado por Alexx Ares - alexxares@bol.com.br
// © 2004 - Pode usar a vontade! 

// Inicialmente, vamos setar os dados de configuração.
// Podem ser campos enviados por um fórmulário, ou 
// resgatados do banco de dados... basta adicionar os 
// scripts que forem necessários.
// Ex: $nome = "$HTTP_POST_VARS[nome]";

// Primeiro, o nome e email de quem envia
$nome_r = "Seu Nome";
$email_r = "seu@email.com.br";

// Depois, nome e email do destinatário
$nome_d = "Destinatário";
$email_d = "email@destino.com.br";

// Assunto da mensagem
$assunto = "Assunto do email";

// Texto principal da mensagem
$texto = "Texto do seu email. Pode ser formatado com <b>HTML</b>";

// Para enviar cópia oculta, deixe $copia = "sim"
$copia = "sim";

// Email para cópia oculta. Pode ser uma lista de emails, separados por ","
$email_c = "email@oculto.com.br";
if($copia=="sim"){ $bcc = "Bcc: $email_c\n"; } else { $bcc = ""; }

// Pronto, configurado.
// Agora vamos criar as partes do email, corpo e imagens.

// Abaixo o script para adicionar um logotipo no email.
// Para cada imagem que for utilizar, copie e cole o script
// alterando o nome ( no caso, "top" )
$img_top_nome = "top.gif";
$img_top_abre = fopen("caminho/da/imagem/$img_top_nome", "r");
$img_top_show = fread($img_top_abre, filesize("caminho/da/imagem/$img_top_nome"));
$img_top_code = chunk_split(base64_encode($img_top_show));
$img_top_cid = "identificador_da_imagem";

// Abaixo vai o código HTML.
// Lembre-se das regras do PHP, como incluir \ antes de ", etc..
// Não copie e cole direto do seu Frontpage ou Dreamweaver...
$body_html = "<html><head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
</head><body bgcolor=\"#FFFFFF\"><div align=\"center\">
<table width=\"478\" border=\"0\" cellspacing=\"10\" cellpadding=\"0\"><tr><td>
<img src=\"cid:$img_top_cid\"></td></tr><tr><td>
<p><font face=\"Verdana, Arial\" size=\"1\">$texto</font></p>
<p><font face=\"Verdana, Arial\" size=\"1\"><b>
Sua assinatura vai aqui!
</a></b></font></p></td></tr></table></div></body></html>";

// Script para transformar o código em texto simples
// Não é necessário alterar.
$body_text = str_replace("<br>","\n",$body_html);
$body_text = strip_tags("$body_text");


// O Email é no formato MIME multipart.
// Abaixo os separadores das partes
$sep_0 = "===SEPARADOR_0000000000===";
$sep_1 = "===SEPARADOR_1111111111===";

// Aqui começa o Header da mensagem. Não é necessário alterar nada.
$header = "";
$header.= "From: $nome_r <$email_r>\n";
$header.= "$bcc";
$header.= "Content-type: multipart/related; type=\"multipart/alternative\";\n";
$header.= "              boundary=\"$sep_0\"\n";
$header.= "MIME-Version: 1.0\n";

// Altere para 1 e para High e o email terá "urgência"
$header.= "Priority: 3\n";
$header.= "X-Priority: Normal\n";

// Programa que enviou o email  =)
$header.= "X-Mailer: Alexx Ares HTML Mail 2004\n";
$header.= "          © Alexx Ares - alexxares@bol.com.br\n";
$header.= "\n\n";

// Aviso para emails antigos que não suportam MIME
$header.= "Esta é uma mensagem multi-partes em formato MIME.\n";
$header.= "\n";
$header.= "This is a multi-part message in MIME format.\n";
$header.= "\n\n";

// Aqui começa o corpo do email. 
// Ele vai com dois códigos alternativos, HTML e texto puro
// O próprio programa de email escolhe o melhor
// No final, vão as imagens.
$mensagem = "--$sep_0\n";
$mensagem.= "Content-Type: multipart/alternative; boundary=\"$sep_1\"\n";
$mensagem.= "\n";

$mensagem.= "--$sep_1\n";
$mensagem.= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$mensagem.= "Content-Transfer-Encoding: 7bit\n";
$mensagem.= "\n$body_text\n";
$mensagem.= "\n";

$mensagem.= "--$sep_1\n";
$mensagem.= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$mensagem.= "Content-Transfer-Encoding: 7bit\n";
$mensagem.= "\n$body_html\n";
$mensagem.= "\n";

$mensagem.= "--$sep_1--\n";
$mensagem.= "\n";

// Aqui o código para uma imagem.
// para mais imagens, copie e cole, alterando o nome "top"
$mensagem.= "--$sep_0\n";
$mensagem.= "Content-Type: image/gif; name=\"$img_top_nome\"\n";
$mensagem.= "Content-Transfer-Encoding: base64\n";
$mensagem.= "Content-ID: <$img_top_cid>\n";
$mensagem.= "\n$img_top_code\n";
$mensagem.= "\n";

// Fim da mensagem!
$mensagem.= "--$sep_0--";

// Agora é só enviar!!
$enviar = @mail("$nome_d<$email_d>","$assunto",$mensagem,$header);

Bom, é isso aí!

Dúvidas e "upgrades" são bem vindos"

Valeu!! (y)
||| PENSE NISSO ||| O ser humano, dizem, deve dormir 8 horas por dia. Isso equivale a 1 terço do seu dia dormindo. Agora imagine a seguinte situação: você, com 75 anos, prestes a morrer, olha para trás e percebe que dormiu 1 terço da sua vida, ou seja, 25 anos. Cara... 25 ANOS DORMINDO !!! Se você tem menos de 25 anos, simplesmente você vai dormir mais do que viveu até hoje!!! Pense nisso... e durma menos.

#2 RainMaker

RainMaker

    Almagus Web Design - O Seu Mundo na Web

  • Usuários
  • 498 posts
  • Sexo:Masculino
  • Localidade:Rio Grande do Sul
  • Interesses:O de todo administrador de empresas: Fazer o negócio evoluir e se desenvolver.

Posted 21/06/2004, 20:27

Nao é necessário alterar os headers mas a msg tem hehhe
Mas muito obrigado pelo exemple

Edição feita por: H!7M@N, 21/06/2004, 20:28.

Quer uma boa promoção?
Cadastre seu cliente em nossa hospedagem, ganhe 50% do valor no primeiro mês e a partir daí 10% a 15% do valor mensal!

Para entrar em contato por e-mail - webmaster@almagus.com.br ou www.almagus.com.br ou MP.

#3 wesley.tome

wesley.tome

    24 Horas

  • Usuários
  • 422 posts
  • Sexo:Masculino

Posted 01/12/2004, 13:40

Eu usei esse código mas antes de enviar fiz uma consulta no banco e peguei todos emails.... como eu poderia fazer para colocar uma mensagem para os emails que deram erro, que nao conseguiu enviar ????
.................

#4 direisc

direisc

    Normal

  • Usuários
  • 90 posts
  • Sexo:Não informado

Posted 01/06/2005, 09:16

eu usei ae tudo certinho so que qnd recebi o email chego vazio :( sem nada nada

#5 lekingdom

lekingdom

    12 Horas

  • Usuários
  • 189 posts
  • Sexo:Não informado

Posted 08/12/2005, 10:29

Muito bom este tutorial, usei 100%, PARABÉNS!
Use filtro solar, nunca deixem de usar filtro solar.

#6 amaranti

amaranti

    Novato no fórum

  • Usuários
  • 21 posts
  • Sexo:Não informado

Posted 13/12/2005, 12:08

tem como setar isso para enviar emails em lotes por exemplo pegar os email s de uma lista txt?

#7 Feio

Feio

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre - RS

Posted 23/03/2011, 12:42

revivendo o tópico...

procurei muito por ai e essa foi a melhor explicação que achei de como enviar um email com mais de 2 imagens no corpo...

posso ter procurado da forma errada, mas garanto que perdi no mínimo 2 horas procurando e lendo por ai...

queria saber se isso ainda é válido e/ou se existem maneiras melhores de se fazer isso, tento em vista que o post é de 2005...

enquanto a resposta não vem vou testando esse método mesmo, qualquer coisa volto aqui pra dizer o que descobri...

obrigado =)

#8 amixel

amixel

    www.amixel.com

  • Usuários
  • 198 posts
  • Sexo:Masculino
  • Localidade:uruguaiana
  • Interesses:web designe asp, php, html, programas,corel,fireworks

Posted 05/08/2011, 19:16

Cara, excelente seu tutorial, estava buscando isto mesmo, pois eu vejo que quando você envia uma imagem atraves do outlook, ela é enviando
desse jeito, fazendo que a imagem abra automaticamente nos leitores de e-mail.

Parabens!!
WWW.AMIXEL.COM.BR

Sistemas em PHP, JSP, ASP Soluções em Programação


MSN: alex.rs@hotmail.com




2 user(s) are reading this topic

0 membro(s), 2 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq