Corpo da mensagem desconfigurada utilizando a funçao mail()
Boa Tarde,
Tenho um sistema que envia mensagens via script via formulário para emails cadastrados no banco de dados. Ele funciona em diversos servidores mas na King Host tive que adaptar meu código utilizando um script que eles me passaram enviando emails com a função mail(), Configurei para que o script envie de 1 em 1 email a cada 14 segundos pois o servidor lá somente aceita que envie 250 mensagens por hora e somente aceita um destinatário por vez até ai ok. Mas quando envio ocorrem 2 problemas:
1 - Ele envia mas a mensagem chega desconfigurada, mostrando o cabeçalho no corpo da mensagem (desculpem minha ignorância mas estou aprendendo php e tentei de diversas formar arrumar isso e nao consegui) Envio abaixo o codigo que estou utilizando.
<?php
if($_POST[elm1] != "")
$_SESSION[msg] = stripslashes($_POST[elm1]);
$msg = $_SESSION[msg];
if($_POST[assunto] != "")
$_SESSION[assunto] = $_POST[assunto];
$assunto = $_SESSION[assunto];
if($_POST[ramo] != "")
$_SESSION[ramo] = $_POST[ramo];
$ramo = $_SESSION[ramo];
//configurações do banco
$host = "mysql.meubanco.com.br";
$banco = "nomedobanco";
$usuario = "usuario";
$senha = "senha";
$tabela = "emails";$campos = "id,email,status"; //campos da tabela
//configurações do e-mail
$email_assunto = $assunto;
$email_conteudo = $msg;
$nome_remetente = "nome da empresa";
$email_remetente = "email@emaildodominio.com.br\r\n";
$quant = 1; //número de mensagens enviadas de cada vez
$sec = 14; //tempo entre o envio de um pacote e outro (em segundos)
?>
<?php
$conexao = mysql_connect($host,$usuario,$senha);
mysql_select_db($banco);
?>
<?php
$ok = 0;
$inicio = 0;
$fim = $inicio + $quant;
?>
<?php
$sql = "select $campos from $tabela where status = 0 limit $inicio,$fim";
$query = mysql_query($sql,$conexao);
$registros = mysql_num_rows($query);
?>
<?php
if($registros==0){
mysql_query("update $tabela set status = 0");
printf("<font face=’tahoma’>todas as mensagens foram enviadas!</font>");
$ok = 1;
}
?>
<?phpwhile($result = mysql_fetch_array($query)){
$id = $result[0];
$email_destinatario = $result[1];
$status = $result[2];
if($email_destinatario != ""){
//REMETENTE --> ESTE EMAIL TEM QUE SER VALIDO DO DOMINIO
//====================================================
$email_do_remetente = $email_remetente; // deve ser um email do dominio
//====================================================
//Configurações do email, ajustar conforme necessidade
//====================================================
//$email_destinatario = $to; // qualquer email pode receber os dados
$email_reply = "valdeci.alves@gmail.com";
//$email_assunto = $subject;
//====================================================
//Monta o Corpo da Mensagem
//====================================================
//$email_conteudo = $body;
//====================================================
//Seta os Headers (Alerar somente caso necessario)
//====================================================
$email_headers = "MIME-Version: 1.0\r\n";
$email_headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$email_headers .= "From: $nome_remetente <$email_do_remetente>";
$email_headers .= "Reply-To: $email_reply\n"; // Endereço (devidamente validado) que o seu usuário informou no contato
$email_headers .= "Return-Path: $email_remetente"; // Endereço (devidamente validado) que o seu usuário informou no contato
//====================================================
//Enviando o email
//====================================================
if (mail ($email_destinatario, $email_assunto, $email_conteudo, $email_headers)){
echo "</b>E-Mail enviado com sucesso!</b>";
}
else{
echo "</b>Falha no envio do E-Mail!</b>";
}
//====================================================
}
mysql_query("update $tabela set status = 1 where id = $id");
printf("<font face=’tahoma’>$id ) mensagem para <b>$email_destinatario</b> <font color=’#ff0000’><b>enviada com sucesso!</b></font></font>
");
}
?>
<?php
mysql_free_result($query);
mysql_close($conexao);
?>
<?php
if(!$ok){
echo("<meta http-equiv=\"refresh\" content=\"" . $sec . "\">");
}
?>
Vejam como o corpo da mensagem chega:
Date: Mon, 29 Dec 2014 21:23:17 -0200 (BRST)
Return-Path: <ecommerce@paramontmg.com.br>
X-Antivirus: avast! (VPS 141229-1, 29/12/2014), Inbound message
X-Antivirus-Status: Clean
Reply-To: valdeci.alves@gmail.com
Subject: Promoção teste
Return-Path: emaildaempresa@dominio.com.br
MIME-Version: 1.0
X-Priority: 3
Content-type: text/html; charset=iso-8859-1
<p><img src="http://www.site.com.br/newsletter/imgnews/1419894855804108.jpg" border="0" alt="" /></p> <br />
2 - A primeira mensagem chega para o destinatário com todos os campos, assunto e corpo mesmo que errado como acima. Mas as outras, parece que na hora do loop perdem os campos assunto e corpo.
Poderiam ver onde eu errei. Agradeço.
Discussão (16)
Carregando comentários...