Ir para conteúdo
Fórum Script Brasil
  • 0

Função Mail() Não Interpreta Código Html


carlosmandra

Pergunta

Olá colegas,

estou com um problema. Tenho um sistema de boletim que envia as mensagens html para uma lista de emails. Funciona normalmente em um servidor de um cilente, mas quando passo para o do meu site, a coisa desanda. Tudo funciona perfeitamente até o envio. O problema é que na hora que o e-mail chega, ao invés de vir bonitinho, com imagens e tudo mais, ele vem'lisado o código html, ou seja, <table> <tr> <td> blablabla</td> ... e assim vai.

O que pode ser? Alguma variável que deva ser configurada no php.ini? Comparei o php.ini dos dois servidores, e estão exatamente iguais.

Abaixo segue o código da página que envia o email:

<?php 
// busca no bd dos registros 
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd ">
<html>
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Newsletter</title>
<link href="../css/estilos.css" rel="stylesheet" type="text/css"> 
</head>

<body>
<table width="760" border="0" cellspacing="2" cellpadding="2">
  <tr>
    <td><?php include("menu.php"); ?></td>
  </tr>
  <tr>
    <td> </td>
  </tr>
  <tr>
    <td><strong><font color="#CC0000">Assistente - Passo 5</font></strong> | 
    <strong>Envio da Newsletter para cadastrados.</strong></td>
  </tr>
  <tr>
    <td height="222"><hr size="1">      
      <p>Aguarde, essa operação poderá levar alguns minutos dependendo do número de cadastrados.</p> 
      <?php 
   
 //Começa o envio da Newsletter
 $x = 1; //varivel para contagem de nmero de e-mails enviados
    $hold = 95; // quantidade de emails que devem ser enviados a cada perodo de 6 minutos 
 //começa o loop para os 7 e-mails
 while($linha = mysql_fetch_assoc($rsEmails)) {
 $to = $linha['email'];
 $subject = $row_rsUltima['titulo'];

 $message = $row_rsUltima['conteudo'];

  $headers = "MIME-Version: 1.0";
 $headers .= "Content-type: text/html; charset=iso-8859-1";
 $headers .= "From: Newsletter < newsletter@123.com.br>"; 
 if(mail($to, $subject, $message, $headers)){
 echo "Enviado com sucesso para $to<br>"; 
 } else { 
 echo "Houve um problema no envio para $to<br>";
 } 
 $x++; //Soma 1 ao valor do $x
    if($x == $hold) { // Verifica se o $x atingiu o limite de $hold, ou seja, 7 e-mails
    sleep(60); // Se atingiu a condicao acima, o servidor segura o envio por 60 segundos 
    $x = 0; // e aps isso, zera a contagem de $x. Inicia-se a operao novamente at o final da lista.
    }

}
  
   ?>
      <p> </p>
      <p>  </p>
      <hr size="1">
      <p> </p>    </td> 
  </tr>
</table>
<p> </p>
</body>
</html>

já tentei inclusive mudar a codificação de ISO pra UTF, mas também sem sucesso.

Alguma idéia?

Abraço!

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Você visualiza os e-mails recebidos no mesmo programa? Pois o cabeçalho está ok, se o HTML está sendo exibido pode ser o programa que você está usando que não dá suporte pra html... mesmo porque a mail não interpreta o código, quem faz isso é o programa que recebe o e-mail, o que a mail faz é enviar os dados e avisar ao programa que o conteúdo tem html...

Link para o comentário
Compartilhar em outros sites

  • 0
Você visualiza os e-mails recebidos no mesmo programa? Pois o cabeçalho está ok, se o HTML está sendo exibido pode ser o programa que você está usando que não dá suporte pra html...

Oi Edgar,

sim, no mesmo programa. Na verdade, pelo Gmail. O mesmo email, enviado por um servidor, chega beleza. Enviado pelo outro, chega só o código. Isso me leva a crer que é algo no próprio servidor, mas já comparei os phpinfo() e são idênticos.

engraçado é que mesmo para as funções simples, como um form de contato, acontece a mesma coisa:

$to = "email@email.com";
    $subject = "Fale Conosco";
    $message = "
    Nome: ".$HTTP_POST_VARS['nome']."<br>
    E-mail: ".$HTTP_POST_VARS['email']."<br>
    Telefone: (".$HTTP_POST_VARS['ddd'].") ".$HTTP_POST_VARS['telefone']."<br>
    Assunto: " .$HTTP_POST_VARS['assunto']."<br>
    Mensagem: ".$HTTP_POST_VARS['mensagem']."<br>
    ";
    $headers = "MIME-Version: 1.0\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\n";
    $headers .= "From: ".$HTTP_POST_VARS['nome']. "<".$HTTP_POST_VARS['email']. ">\n";
    
mail($to, $subject, $message, $headers);

Isso chega assim:

Nome: fulano de tal <br>

E-mail: email@fulanodetal<br>

...

estranho ne?

Link para o comentário
Compartilhar em outros sites

  • 0

Eu testei o teu primeiro código.... aqui também não funciou... dai dei uma modificada na disposição dos dados no cabeçalho e pelo menos no outlook começou a funcionar... o cabelho ficou assim:

$headers = "From: Newsletter < newsletter@123.com.br>\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "MIME-Version: 1.0";

Link para o comentário
Compartilhar em outros sites

  • 0
Eu testei o teu primeiro código.... aqui também não funciou... dai dei uma modificada na disposição dos dados no cabeçalho e pelo menos no outlook começou a funcionar... o cabelho ficou assim:

$headers = "From: Newsletter < newsletter@123.com.br>\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "MIME-Version: 1.0";
Edgar, testei aqui dessa maneira, mas também não funcionou. Fui fuçar no cabeçalho do e-mail, e achei algo interessante:
=====================
Delivered-To: carlos@illyanarasputin.com
Received: by 10.82.141.11 with SMTP id o11cs1296130bud;
        Mon, 14 May 2007 05:16:02 -0700 (PDT) 
Received: by 10.70.42.20 with SMTP id p20mr9695143wxp.1179144961787;
        Mon, 14 May 2007 05:16:01 -0700 (PDT)
Return-Path: < nobody@server47.integrityserver.net>
Received: from server47.integrityserver.net (server47.integrityserver.net [ 74.52.46.19])
        by mx.google.com with ESMTP id i12si2187827wxd.2007.05.14.05.16.01;
        Mon, 14 May 2007 05:16:01 -0700 (PDT)
Received-SPF: pass ( google.com: best guess record for domain of nobody@server47.integrityserver.net designates 74.52.46.19 as permitted sender)
Received: from nobody by server47.integrityserver.net with local (Exim 4.63)
(envelope-from < nobody@server47.integrityserver.net>)
id 1HnZRW-0004lA-0f
for carlos@illyanarasputin.com; Mon, 14 May 2007 07:14:22 -0500
To: carlos@illyanarasputin.com
Subject: Newsletter 14/05/2007 07:13
MIME-Version: 1.0
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: BASE64 
Message-Id: <E1HnZRW-0004lA-0f@server47.integrityserver.net>
From: Nobody <nobody@server47.integrityserver.net >
Date: Mon, 14 May 2007 07:14:22 -0500

=====================

repare na linha:

Content-Type: text/plain; charset=UTF-8

Veja que o servidor server47.integrityserver.net só libera a mensagem com text/plain, mesmo ele sendo enviado em text/html. Não será uma configuração do servidor de e-mail?

tem alguma maneira de sobrescrever essa configuração pelo código ou tenho que solicitar ao pessoal do server?

Editado por carlosmandra
Link para o comentário
Compartilhar em outros sites

  • 0

Realmente parece que o cabeçalho enviado pelo php tá sendo ignorado... acho que o mais simples é você perguntar no suporte técnico porque o cabeçalho que você está designando está sendo ignorado no servidor de e-mails...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Hipérion

Olá Pessoal, estava desenvolvendo uma aplicação para um cliente e me deparei com um problema que nunca havia acontecido. Em uma situação o administrador do sistema deseja enviar uma 'newsletter' para seus cadastros. Até então tudo seguia bem. O problema é que ao enviar esse e-mail reparei que o resultado no Outlook era satisfatório, porém no Gmail o conteúdo do e-mail não é interpretado como HTML e sim como texto plano... o resultado no Gmail é:

Content-Type: text/HTML;charset=ISO-8859-1

Content-Transfer-Encoding:8bit

<html>

<head>

<meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1' />

<title>( Cliente )</title>

<style type='text/css'>

<!--

body {

margin-left: 0px;

margin-top: 0px;

margin-right: 0px;

margin-bottom: 0px;

}

.style1 {

font-family: Verdana, Arial, Helvetica, sans-serif;

font-size: 11px;

}

-->

</style>

<script type='text/JavaScript'>

<!--

function MM_preloadImages() { //v3.0

var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();

var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)

if (a.indexOf('#')!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a;}}

}

//-->

</script>

<link href='3a.css' rel='stylesheet' type='text/css' />

</head>

<body onload='MM_preloadImages('images/imgOn.gif')'>

<table width='600' height='100%' border='0' align='center' cellpadding='0' cellspacing='0'>

<tr>

<td height='260'><img src='http://www.dominio.com.br/imagens/newsletter1.jpg' width='600' height='260' /></td>

</tr>

<!-- COMECO DA NOTICIA -->

<tr valign='top'>

<td width='594' background='http://www.dominio.com.br/imagens/newsletter4.jpg'>

<table width='600' height='200' border='0' cellpadding='0' cellspacing='0'>

<tr>

<td valign='top' align='center' class='fundo'><br />

<p>

<strong>Título</strong><br />

Texto <br><br>

<img src='http://www.dominio.com.br/imgNewsletter/2008042327724_32637381.jpg' width='350' height='200' border='0' />

</p>

</td>

</tr>

</table>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p></td>

</tr>

<!-- FIM DA NOTICIA -->

<tr>

<td height='35'><img src='http://www.dominio.com.br/imagens/newsletter3.jpg' width='600' height='35' /></td>

</tr>

</table>

</body>

</html>

O código para configurar o cabeçalho é esse:

$mailheaders = 'From: ' . $from . "\n";

$mailheaders .= "MIME-Version: 1.0\r\n";

$mailheaders .= "Content-Type: text/HTML;charset=ISO-8859-1\n";

$mailheaders .= "Content-Transfer-Encoding:8bit\n\n";

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...