<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="robots" CONTENT="NOINDEX,NOFOLLOW">
<title>E-Mail Subscriber List</title>
<link rel="stylesheet" type="text/css" href="simple.css">
</head>
<body>
<h3><u>Suscriptor de listas de emails</u></h3><br>
<?php


########
# INFO #
########

/*
Titulo:
Suscriptor de listas de emails


Autor:
Eric O'Callaghan (eric@ericoc.com)

Fecha de creación :
10 de agosto de  2006 (Viernes)

Requerimientos básicos:
PHP
SMTP

Instalación:
1. Sube este archivo a tu sitio web.
2. Crea un archivo de texto para guardar los e-mails (and chmod it to 0666)
El archivo se denomina "emails.txt" pero puedes cambiar el nombre si lo haces también en su variable.
3. Puedes crear un archivo CSS para darle estilo a la página (email.css , puedes cambiarle el nombre al archivo CSS en la primera parte de este script)
Un buen ejemplo lo puedes encontrar en: http://ericoc.com/mail/email.css
4. Te sugiero agregar un e-mail y enviar un mensaje para comprobar su buen funcionamiento.
5. Haz lo que quieras


Notas:

Modifica el script a tu gusto libremente. Si tienes alguna sugerencia por favor enviamela a eric1207@gmail.com. Si
me envias algún cambio tu nombre saldra en los creditos.
http://ericoc.com/mail/

La misma dirección de correo no puede ser agregada dos veces.

La contraseña del administrador se introduce en el campo donde los ususarios imsertan su email. Al clickear "suscribir" aparecera un formulario de envio de emails.

Para borrar un email de la lista hay que hacerlo desde el archivo de texto(emails.txt)

Fallos comunicados:

Gracias a Simon Evans por señalar que había un erros en el mensaje de exito de despues de enviar el email desde el area de acministrador.

Gracias a Thomas McCartney por sugerencias varias!


Disfruta..
*/

##########################
# VARIABLES - EDIT THESE #
##########################

// ¿Cual quieres que sea la contraseña del administrador?
// Introduce la contraseña en el campo de email y podrás enviar un e-mail a los suscriptores
$adminpass "password";

// ¿Cual quieres que sea el e-mail de origen para los examenes?
$fromemail "info@rca.com";

// ¿Cual es el nombre del archivo de texto que guardará la lista de correos?
$file "emails.txt";

// ¿Cuantos emails pueden ser agregados a la lista?
// Configurar de 0 hasta ilimitado
$limit "10000";

##########################################
# TEN CUIDADO EDITANDO LA PARTE DE ABAJO #
##########################################

// Crear una función para limitar el numero de emails de la lista
function checklimit ($limit) {

    
// Consigue el nombre del archivo y el limite
    
global $file;

    
// Numero de lineas en el archivo
    
$lines file($file);
    
$num_lines count($lines);

    
// Error si se llega al limite
    
if ($limit == "0") {
        
$limitreached "NO";
    } elseif (
$num_lines >= $limit) {
        
$limitreached "YES";
    } else {
        
$limitreached "NO";
    }

    
//  Error de retorno
    
return $limitreached;
}

// Procesa el formulario una vez el usuario acepta
if (($_GET['do'] == "send") && ($_POST['password'] == $adminpass) && (isset($_POST['subject'])) && (isset($_POST['body']))) {

    
// Abre la lista
    
$fh fopen($file"a");
    if (
$fh) {

        
// Consigue los contenidos de la lista
        
$data file($file);

        
// Comprueba cada e-mail de la lista
        
for ($n 0$n count($data); $n++) {
            
$line explode("\n"$data[$n]);

            
// Envia un e-mail a cada una de los correos de la lista
            
mail($line[0], $_POST['subject'], $_POST['body'], "From: $fromemail");
        }

        
// Mensaje de exito
        
$msg "El mensaje ha sido enviado con exito a todos los suscriptores de la lista.";
 
    
// Error, si la lista no puede abrirse
    
} else {
        
$error "Tu e-mail no ha sido agregado a la lista, intentalo de nuevo mas tarde.";
    }

    
// Cierra la lista
    
fclose($fh);

// Procesa el formulario para agregar un email
} elseif (($_GET['do'] == "add") && (isset($_POST['email']))) {

    
// Sustituye el < and > en las direcciones de correo para mostrarlo en el html
    
$lefttag "&lt;";
    
$righttag "&gt;";
    
$EmailFix str_replace("<"$lefttag$_POST[email]);
    
$EmailFix str_replace(">"$righttag$EmailFix);

    
// Comprueba el administrador
    
if ($_POST['email'] == $adminpass) {

        
// Muestra el formulari de envio
        
echo "<form method=\"POST\" action=\"" $_SERVER['SCRIPT_NAME'] . "?do=send\">\n";
        echo 
"<input type=\"hidden\" name=\"password\" value=\"$_POST[email]\">\n";
        echo 
"Asunto:<br>\n<input type=\"text\" name=\"subject\"><br>\n";
        echo 
"Mensaje:<br>\n<textarea name=\"body\" cols=\"50\" rows=\"20\"></textarea><br>\n";
        echo 
"<input type=\"submit\" value=\"Enviar\">\n";

        
// Finaliza el script
        
echo "</body>\n";
        echo 
"</html>\n";
        exit;

    
// Comprueba el limite de correos
    
} elseif (checklimit($limit) == "YES") {
        
$error "Tu e-mail no ha sido agregado a la lista, intentalo de nuevo mas tarde. Si el problema persiste comunicalo al siguiente e-mail: info@web.com";

    
// Comprueba el email
    
} elseif (!eregi("^([a-z ])*(<)?[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}(>)?$"$_POST['email'])) {
        
$error "El formato de e-mail no es el adecuado";

    
// Añade el e-mail si no existe en la lista
    
} else {

        
// Abre la lista
        
$fh fopen($file"a");
        if (
$fh) {

            
// Consigue los elementos de la lista
            
$data file($file);

            
// Compara cada email de la lista con el agregado
            
for ($n 0$n count($data); $n++) {
                
$line explode("\n"$data[$n]);

                
// Error isi el email agregado ya existe en la lista
                
if (eregi("^(\\$_POST[email])$"$line[0])) {
                    
$emailexists "yes";
                    
$error "El correo $EmailFix ya fue agregado a la lista.";
                }
            }

        
// Error si la lista no puede ser abierta
        
} else {
            
$emailexists "yes";
            
$error "Tu e-mail no ha sido agregado a la lista, intentalo de nuevo mas tarde.";
        }

        
// Agrega el mail al archivo de texto
        
if ($emailexists != "yes") {

            
// Agrega a la lista y da un mensaje de exito
            
fwrite($fh"$_POST[email]\n");
            
$msg "La dirección de e-mail $EmailFix ha sido agregada a la lista";
        }

        
// Cierra la lista
        
fclose($fh);
    }
}

// Muestra errores si se encuentran
if (isset($error)) {
    echo 
"<font color=\"red\"><b>" $error "</b></font><br><br>\n";

// Muestra mensaje de exito si no se encuentran errores
} elseif (isset($msg)) {
    echo 
"<b>" $msg "</b>\n";
    echo 
"</body>\n";
    echo 
"</html>\n";
    exit;
}

?>
<form method="POST" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>?do=add">
E-mail: <input type="text" name="email"><br>
<input type="submit" value="Suscribir">
</form>
</body>
</html>