Enviando newsletter html a los usuarios de un clon menéame

25 views
Skip to first unread message

Adrian

unread,
May 26, 2013, 12:31:38 PM5/26/13
to men...@googlegroups.com
Buenas tardes,

Esto es algo que quería hacer hace algún tiempo y esta tarde me he puesto con ello y ya lo tengo funcionando.

1º Creamos una función en libs/mail.php:

function send_mail_newsletter($to, $subject, $message) {
global $globals;
if (! empty($globals['email_domain'])) $domain = $globals['email_domain'];
else $domain = get_server_name();
$subject = mb_encode_mimeheader("$subject","UTF-8", "B", "\n");
$headers = 'Content-Type:  text/html; charset="utf-8"'."\n" .
'From: '._('Newsletter').' '.$domain.' <'._('no_contestar')."@$domain>\n".
'Reply-To: '._('no_contestar')."@$domain\n".
'X-Mailer: TU_DOMINIO' . "\n";
$headers .= 'MIME-Version: 1.0' . "\n";
mail($to, $subject, $message, $headers);
}
2º Colocamos la plantilla .html en una carpeta, por ejemplo en la raíz

3º Creamos un fichero .php, continuo con el ejemplo de la raíz:

<?
include('config.php');
include(mnminclude.'html1.php');
include(mnminclude.'ts.php');
global $users, $globals;
$from = "users";
$users = $db->get_results("select user_id, user_login, user_email from $from order by user_id asc");
foreach ($users as $user) {
if(preg_match("/^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/", $user->user_email)){
$to = $user->user_email;
$subject = "Newsletter mayo";
$message = file_get_contents('newsletter.html'); //Aquí indicamos la ruta de la plantilla
require_once(mnminclude.'mail.php');
send_mail_newsletter($to, $subject, $message);
}
}
?>

 
Si tienes activados los registros mediante fb, twitter y g+, como correo de los usuarios se pone únicamente usuario@facebook al registrarse, y no tendría sentido mandarles el correo, así que con el preg_match comprobamos que sea una dirección de email válida.

Ahora ejecutando este fichero php enviamos los correos a nuestros usuarios con un correo válido.

Un saludo, y espero que le sea de ayuda a alguien.

PD: Evidentemente se podría crear una interfaz para el envío, o crear un nuevo campo boolean en la base de datos de usuarios llamado newsletter para que los usuarios se suscriban o desuscriban a través de sus perfiles, pero esto ya queda a cargo de cada uno ;)


 
Reply all
Reply to author
Forward
0 new messages