• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

rexmage

Dúvida sobre newsletter

3 mensagens neste tópico

Boas pessoal, estou a programar um backoffice  e durante o desenvolvimento o código pareceu-me correcto, e após terminar, descobri que a newsletter não está muito correcta e acontece 2 coisas que preciso de alterar, que é o seguinte:

1º - quando o email chega ao cliente, vai como spam, logo suponho que o meu código de envio esteja mal estruturado.

2º as tabelas e imagens não chegam a ser visualizadas, apenas se vê o texto pois eu usei isto

$mensagem = strip_tags(html_entity_decode($_POST["mensagem"]));

Disseram-me que strip_tags não é correcto ser usado, mas desta forma dá-me a visualização correcta apenas do texto.

resumindo, tenho dois ficheiros!

1 - que recebe num form o texto e imagens que está na base de dados e isso.

2 - envia para os clientes os mails apos no ficheiro 1 carregar "enviar"

ficheiro 1

<?php 

session_start();
require_once('db.php');
include('functions.php');
include('settings.php');
checkLogin('1 2');


$active_users = mysql_num_rows ( mysql_query ( "SELECT texto FROM `intro` " ) );


$pagination->start = ( $_GET['start'] ) ? $_GET['start'] : '0';
$pagination->filePath = $url . 'index_nl.php';
$pagination->select_what = '*';
$pagination->the_table = '`intro`';
$pagination->add_query = ' WHERE `Active` = ' . mysql_real_escape_string ( $which_users );
$pagination->otherParams = '&active=' . $which_users;

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script language="javascript" type="text/javascript" src="js/tiny_mce.js"></script>

<script type="text/javascript">
tinyMCE.init({
	// General options
	mode : "textareas",
	theme : "advanced",
	plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",

	// Theme options
	theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
	theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
	theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
	theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",
	theme_advanced_toolbar_location : "top",
	theme_advanced_toolbar_align : "left",
	theme_advanced_statusbar_location : "bottom",
	theme_advanced_resizing : true,

	// Example content CSS (should be your site CSS)
	content_css : "css/content.css",

	// Drop lists for link/image/media/template dialogs
	template_external_list_url : "lists/template_list.js",
	external_link_list_url : "lists/link_list.js",
	external_image_list_url : "lists/image_list.js",
	media_external_list_url : "lists/media_list.js",

	// Replace values for the template plugin
	template_replace_values : {
		username : "Some User",
		staffid : "991234"
	}
});
</script>

<title>administração</title>
<link href="css/styles.css" rel="stylesheet" type="text/css" />

    <style type="text/css">
<!--
.style2 {font-family: Verdana, Arial, Helvetica, sans-serif}
.style3 {
color: #BA1814;
font-weight: bold;
}
.style1 {	font-size: 16px;
color: #000000;
}
-->
    </style>
</head>
<body>
<script>
function remove(email){
if(confirm("Tem certeza que deseja remover este email?")){
location.href='remove_nl.php?email='+email+'';
}
}
</script>
<p class="style3 style2"><font size="4">Enviar newsletter</font></p>
<form method="POST" action="envia_mail_nl.php">
  <p align="center" class="style1 style2">Através deste formulário pode enviar mail's para um ou todos os seus clientes registados na sua base de dados </p>
  <p align="center">
    <?php

		if ( isadmin ( $_SESSION['user_id'] ) ):
			$db = mysql_select_db("tabela");
			$sql = "SELECT * FROM intro ";
			$resultado = mysql_db_query("tabela",$sql)
			or die ("Não foi possível realizar a consulta na base de dados");

			while ($intro=mysql_fetch_array($resultado)) {
				$titulo = $intro["titulo"];
				$texto = $intro["texto"];
				$id = $intro["id"];

															}



	?>
  </p>
  
<div align="center">
            <table border="0" cellpadding="0" cellspacing="0" height="737" width="245">
       <tr>
         <td width="455" height="18"><p align="left"><span class="style2">Enviar para </span><span class="style2"><font size="2" face="Arial">
           <select name="msg_para" size="1">
             <option value="todos" selected="selected">Todos os emails</option>
             <?php
    $sql = mysql_query("SELECT * FROM n_emails WHERE ativo = 's'");
    while($lista = mysql_fetch_array($sql)){
    $email = $lista["email"];
    ?>
             <option value="<?=$email?>">
             <?=$email?>
             </option>
             <?php } ?>
           </select>
         </font></span><input type="submit" value="Enviar" ></p></td>
       </tr>
       <tr>
         <td height="18"><p align="left"><span class="style2">Assunto</span></p></td>
       </tr>
       <tr>
         <td height="20"><p align="center"><font face="Arial" size="2">
           <input type="text" name="msg_assunto" value="<?=$titulo?>" size="134" />
         </font></p></td>
       </tr>
       <tr>
         <td height="18">
         <p align="left"><span class="style2">Descrição</span></td>
      </tr>
       <tr>
         <td height="643">
           <p align="center"><font face="Arial">
             <textarea rows="40" name="mensagem" cols="100"><?=$texto?>
             </textarea>
         </font></td>
      </tr>
    
     </table>
  </div>
<?php endif; ?>
</form>
</body>

</html>

ficheiro 2

<?php
session_start();
require_once('db.php');
include('functions.php');
include('settings.php');
checkLogin('1 2');


include("../config_nl.php");
$msg_para    = $_POST["msg_para"];
$msg_assunto = $_POST["msg_assunto"];
$msg_tipo    = $_POST["msg_tipo"];

$mensagem    = strip_tags(html_entity_decode($_POST["mensagem"]));



if($msg_para == "todos"){
	$sql = mysql_query("SELECT * FROM n_emails WHERE ativo = 's'");
	$total = mysql_num_rows($sql);
	$mailok = 0;
	$falha  = 0;
while($lista = mysql_fetch_array($sql)){
	$email = $lista["email"];
	$cabecalho  = "From: $a_nome <$a_email>";
	$cabecalho .= "\nReply-To: $a_nome <$a_email>";
	$cabecalho .= "\nContent-Type: $msg_tipo";
	 if(@mail($email,$msg_assunto,$mensagem,$cabecalho)){
	 $mailok = $mailok + 1;
	 $msg = "<font color=green>SUCESSO!</font>";
 }
 else{
	 $falha = $falha + 1;
	 $msg = "<font color=red>FALHA!</font>";
 }
 ?>
 <font face="Arial" size="2">Enviando para <b><?=$email?></b>...
 <b><?=$msg?></b></font><br>
 <?php } ?>
 <script>alert("<?=$total?> e-mails deveriam ser enviados...\n<?=$mailok?> foram mandados corretamente,\n<?=$falha?> falharam!\n")</script>
 <?php
 }
else{
$cabecalho  = "From: $a_nome <$a_email>";
$cabecalho .= "\nReply-To: $a_nome <$a_email>";
$cabecalho .= "\nContent-Type: $msg_tipo";
if(@mail($msg_para,$msg_assunto,$mensagem,$cabecalho)){
 $msg = "<font color=green>SUCESSO!</font>";
 }
 else{
 $msg = "<font color=red>FALHA!</font>";
 }
?>
<font face="Arial" size="2">Enviando para <b><?=$msg_para?></b>...
<b><?=$msg?></b></font><br><?php
}


?>

Se me puderem dar uma ajuda, agradecia. cumprimentos pessoal!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, dps de muito matutar descobri a solução.

$cabecalho  = "Content-Type: text/html; charset=ISO-8859-1; \n";

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

$cabecalho .= "From: $a_nome <$a_email> ;\n";

if(@mail($msg_para,$msg_assunto,$mensagem,$cabecalho)){

$msg = "<font color=green>SUCESSO!</font>";

}

else

{

$msg = "<font color=red>FALHA!</font>";

}

cumprimentos, podem fechar este tópico!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nos headers nao precisas de indicar obrigatoriamente o email se quiseres podes retirar, e quando tiveres alguma duvida tipo isso a melhor soluçao e consultares o site da php.net a propria instruçao que encontras qualse sempre la um bom exemplo do que procuras.

em relaçao ao strip_tags pra te retirar as tags, podes aceitar tags nas mensagem, se quiseres permitir determinadas tags, podes indicar no 2 elemento do strip tags as tags que aceitas.

podes usar o regex tambem para retirar as tags tabem. :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora