Mandar email a una lista de contactos

Necesito mandar un mail a una lista de contactos que tengo pero no estoy seguro de como hacerlo, en el mail quisiera mandar imágenes en el mail, no como adjuntos

1 respuesta

Respuesta
1
Aquí tienes un código que te permite enviar correos en formato HTML a diversos usuarios. Las imágenes que pongas no serán adjuntos sino que se leerán directamente de tu sitio web.
<?php
// múltiples recipientes
$para = '[email protected]' . ', '; // note la coma
$para .= '[email protected]';
// asunto
$asunto = 'Recordatorios de Cumpleaños para Agosto';
// mensaje
$mensaje = '
<html>
<head>
<title>Recordatorios de Cumpleaños para Agosto</title>
</head>
<body>
<p>¡Aquí están los cumpleaños que vienen en Agosto!</p>
<table>
<tr>
<th>Persona</th><th>Día</th><th>Mes</th><th>Año</th>
</tr>
<tr>
<td>Juan</td>
<td>3</td>
<td>Agosto</td>
<td>1970</td>
</tr>
<tr>
<td>Sandra</td>
<td>17</td>
<td>Agosto</td>
<td>1973</td>
</tr>
<tr>
<td>Una imagen: <img src="http://static.todoexpertos.com/imgs/layout/logo.gif"></td>
</tr>
</table>
</body>
</html>
';
// Para enviar correo HTML, la cabecera Content-type debe definirse
$cabeceras = 'MIME-Version: 1.0' . "\r\n";
$cabeceras .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Cabeceras adicionales
$cabeceras .= 'To: María <[email protected]>, Kelly <[email protected]>' . "\r\n";
$cabeceras .= 'From: Recordatorio de Cumpleaños <[email protected]>' . "\r\n";
$cabeceras .= 'Cc: [email protected]' . "\r\n";
$cabeceras .= 'Bcc: [email protected]' . "\r\n";
// Enviarlo
mail($para, $asunto, $mensaje, $cabeceras);
?>
Hola David
Gracias por el código que me enviaste, solo tengo unas consultas...
1.En la primera parte pones
$para = '[email protected]' . ', '; // note la coma
$para .= '[email protected]';
¿Aquí tendría que poner las 100 direccions (por ejemplo)? Si fuera así... no crees es un poco funcional... no se.. me parece...
2. en esta parte ... tengo que poner otra vez las dierecciones ?$cabeceras .= 'To: María <[email protected]>, Kelly <[email protected]>' . "\r\n";
3. ¿Abría alguna opción de tener el cuerpo o el mensaje guardado en una página adicional y a la hora de hacer el envío cargue la página para enviarla?
Saludos y gracias
Esto es sólo un ejemplo (bastante completo) que tu deberías adaptar a tu caso.
Por supuesto que $para puede ser rellenado con las direcciones que tu obtengas de un fichero o de una base de datos. Depende de dónde tengas la información, de cómo la obtengas, etc.
En las $cabeceras, las direcciones pueden tener alias, pero puedes copiar el contenido de $para después del 'To: ' y también te funcionará.
Por supuesto puedes tener el cuerpo del mensaje guardado en un fichero, base de datos u otro sistema de almacenamiento y rellenar con esos datos la variable $mensaje.
Se trata de adaptarlo a tu conveniencia. Yo sólo te indico el camino, pero eres tu el que debe andarlo.
Hola David... entiendo lo que me dices... tengo un código parecido al que pusiste pero me gustaría que lo chequearas, ¿te lo puedo enviar por correo? ¿A cuál? ¿O lo pongo acá?
Saludos,
Puedes ponerlo aquí mismo. Especifica qué es lo que no te funciona y puedo echarte una mano.
Hola David
Aquí esta el código, en resumidas cuentas lo que hacer es abrir el archivo de texto y lo va recorriendo linea a linea y manda el mail a cada dirección que lee del archivo, el problema es que emieza a mandar los email y se queda como pegado y no se sabe si termina de mandar los email o no...
También mi entencion es tener los cueros en archivo parte y que los carguen cuando los vayan a mandar de esa forma la agina de envío me sirva ara cualquier email que quiera
<?php
$lines = file ('file_test.txt');
$num_lines = (count ($lines))-2;
echo ("Total de Emails en el archivo: " . $num_lines);
if(tiny_mce_markerPOST['confirmacion']=='submited')
{ $name = tiny_mce_markerPOST['name'];
$email = tiny_mce_markerPOST['email'];
$volante = tiny_mce_markerPOST['volante'];
$descripcion= tiny_mce_markerPOST['descripcion'];
$paquete = tiny_mce_markerPOST['paquete'];
$pagina = tiny_mce_markerPOST['pagina'];
$asunto = tiny_mce_markerPOST['asunto'];
$emailenvio = tiny_mce_markerPOST['emailenvio'];
// Esta parte carga en variables la Fecha y la Hora de Inicio
//***********************************************************
$fecha=date("d-M-Y");
$newline = "<br/>";
print($newline);
Print("Hora en que se Inicion el invio: ");
$horainicio= date("h.i a");
print ($horainicio);
//***********************************************************
$cuerpo='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Su sitio web por $150</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body {
background-image: url();
}
-->
</style>
</head>
<body>
<div align="center">
<p> </p>
<p> </p>
<p><img src="file:///D|/Publiwebcr/Página%20en%20el%20servidor/envio/images/sitioweb01.jpg" width="800" height="600" border="1" usemap="#Map">
<map name="Map">
<area shape="rect" coords="422,540,637,577" href="mailto:[email protected]" alt="Escríbanos">
<area shape="rect" coords="437,506,617,535" href="mailto:[email protected]" alt="Escríbanos">
<area shape="rect" coords="195,12,793,73" href="http://www.publiwebcr.com/intro/">
<area shape="rect" coords="145,504,304,594" href="http://www.publiwebcr.com">
</map>
</p>
</div>
</body>
</html>
';
$total=0;
//$newline = "<br/>";
$myFile = "file_test.txt";
$fh = fopen('file_test.txt', 'r');
echo $var;
while( !feof($fh) )
{ $theData = fgets($fh);
$to=$theData;
$total=$total +1;
// print($total);
// print(" ");
// print ($theData);
// print($newline);
// Datos del Email de la publicidad
$subj = $asunto; //"Reporte de servicio de envio de publicidad";
$auto_msg_subj = "Confirmacin de Publiwebcr";
$auto_mg_from = "Joseph Marquez <[email protected]>";
$from = $emailenvio; //"[email protected]";
$reply = "[email protected]";
$cc = "";
$bcc = "[email protected]";//"[email protected]";
$body = $cuerpo;
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: ".$from."\r\n";
$headers .= "Reply-To: ".$reply."\r\n";
$headers .= "Cc: ".$cc."\r\n";
$headers .= "Bcc: ".$bcc."\r\n";
//Aqui se manda el mail
mail($to,$subj,$body,$headers);
}
//print($newline);
fclose($fh);
echo '
<script language="JavaScript">
alert("Los Mails fueron enviados... Esperamos que funcione :)");
</script>
';
//Toma la hora en que termino
print($newline);
Print("Hora en que se ternimo el invio: ");
$horatermino= date("h.i a");
print ($horatermino);
print($newline);
}
//$name=strtoupper($name);
// Datos del Email de Reporte
$para = "[email protected]";
$asunto = "Reporte de servicio de envio de publicidad";
$cuerpo2 ='
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<style type="text/css">
<!--
.style9 {color: #FFFFFF; font-weight: bold; font-size: 12px; }
.style10 {
color: #FA893B;
font-size: 18px;
font-family: Arial, Helvetica, sans-serif;}
.style11 {color: #999999}
body { background-image: url(http://www.publiwebcr.com/fondo01.gif);}
.style12 {
color: #000000;
font-size: 12px;}
.style13 {color: #000000}
.style14 {color: #000000; font-weight: bold; font-size: 12px; }
.style15 {
font-size: 14px;
font-weight: bold;}
.style16 {
font-size: 12px;
font-weight: bold;
}
.style17 {
font-weight: bold;
font-size: 24px;
}
.style18 {font-size: 14px}
-->
</style>
</head>
<body>
<br><br>
<div align="center"><img src="http://www.publiwebcr.com/bannerPubliwebCr.jpg">
</div>
<table width="100%" height="214" border="0" cellpadding="10" cellspacing="0">
<tr valign="top">
<td height="35" colspan="5"><span class="style10"><span class="style11">PubliWebcr.com</span> - Reporte de Envío de Publicidad</span></td>
</tr>
<tr>
<td width="1" bgcolor="#0033FF"> </td>
<td width="119" height="25" bgcolor="#00CCFF">
<div align="right" class="style9">
<div align="left" class="style12">Cliente :</div>
</div>
</td>
<td width="537" background="http://www.publiwebcr.com/fondo01.gif"><span class="style15">'.$name.'</span></td>
<td width="81" background="http://www.publiwebcr.com/fondo01.gif" class="style13 style16">Fecha</td>
<td width="145" background="http://www.publiwebcr.com/fondo01.gif"><span class="style15">'.$fecha.'</span></td>
</tr>
<tr>
<td bgcolor="#0033FF"> </td>
<td height="18" colspan="4" bgcolor="#33CCFF">
<div align="right" class="style17">
<div align="left">
<div align="center" class="style13 style18">DETALLES DE SERVICIO DE ENVIO PUBLICIDAD</div>
</div>
</div>
</td>
</tr>
<tr>
<td bgcolor="#0033FF"> </td>
<td height="34" bgcolor="#00CCFF" class="style14">Nombre del volante :</td>
<td colspan="3" background="http://www.publiwebcr.com/fondo01.gif" class="style15">'.$volante.'</td>
</tr>
<tr>
<td bgcolor="#0033FF"> </td>
<td height="34" bgcolor="#00CCFF" class="style14">Descripción:</td>
<td colspan="3" background="http://www.publiwebcr.com/fondo01.gif" class="style15">'.$descripcion.'</td>
</tr>
<tr>
<td bgcolor="#0033FF"> </td>
<td height="34" bgcolor="#00CCFF" class="style14">Paquete:</td>
<td colspan="3" background="http://www.publiwebcr.com/fondo01.gif" class="style15">'.$paquete.'</td>
</tr>
<tr>
<td bgcolor="#0033FF"> </td>
<td height="34" bgcolor="#00CCFF" class="style14">Página:</td>
<td colspan="3" background="http://www.publiwebcr.com/fondo01.gif" class="style15">'.$pagina.'</td>
</tr>
</table>
<hr>
</body>
</html>
';
mail($para,$asunto,$cuerpo2,$headers);
?>
Lo que ocurre es que estás enviando los e-mails uno a uno y eso es muy ineficiente con esta función y tardará mucho si son varios los e-mails.
Te recomiendo que envíes pocos e-mails agrupando direcciones en $bcc (es decir, en copia oculta). La función mail de PHP no está pensada para enviar e-mails masivos como parece que es tu intención.
Hola David
Entiendo tu respuesta, pero entonces.. ¿cómo seria la mejor manera de mandar los mails? ¿Solo poniendo las direcciones en el BCC?, realmente los email que mando no son muchos ... son más o menos unso 200 al mes pero si me pasa eso...
¿La otra consulta es como puedo tener el cuerpo del mail en un archivo aparte y cargarlo a la hora de mandar el mail?
Gracias
En efecto, deberías ponerlos todos en el BCC y en el TO puedes poner la misma dirección que FROM. Esa es la manera más optima en este caso.
Para recuperar el cuerpo de un fichero deberías hacer algo como esto:
<?php
$archivo = file("prueba.txt");
$cuerpo2 = "";
$lineas = count($archivo);
for($i=0; $i < $lineas; $i++){
$cuerpo2 .= $archivo[$i];
}
?>
Hola David...
Oye esta muy bueno eso...
Una ultima consulta... había escuchado algo de que el tiempo que tiene PHP podía ocasionar un problema como el que me pasa a mi, no estoy muy seguro de eso...
Gracias
En efecto, PHP tiene estipulado un tiempo máximo de ejecución para evitar que un código erróneo pueda bloquear el servidor.
El parámetro del servidor default_socket_timeout define este tiempo que normalmente es de 60 segundos. Si la ejecución tarda más, se abortará.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas