Tecnología y Coaching para Emprendedores

Aprende a Enviar Newsletters Gratis con PHPlist (3a parte)

phplist

Esta es la tercera parte del tutorial para enviar newsletters gratis con PHPlist. En la primera parte vimos como instalar y configurar PHPlist en nuestro servidor para poder enviar correos a los usuarios. En la segunda parte del tutorial vimos cómo crear un formulario de registro personalizado. En esta tercera parte vamos a aprender a modificar las páginas de destino de PHPList, así como los mensajes que aparecen en los correos.

Modificar mensajes de los correos

Podemos modificar los mensajes que aparecen en los correos desde el panel de administración y desde el archivo de idioma. Para modificar los mensajes desde la web, vamos a tudominio.com/lists/admin/?page=configure y allí modificamos uno a uno los mensajes.

Hay algunos parámetros que no se modifican por defecto desde aquí, por lo que se hace necesario ir al archivo de idioma, que se encuentra en el servidor en public_html > lists > texts. En nuestro ejemplo hemos seleccionado spanish_utf8.inc, es importante que modifiques el mismo que pusiste en el archivo config.php, o de otro modo no verás los cambios. Si necesitas ayuda con config.php. te recomiendo que revises la “> primera parte de este tutorial.

Modificar páginas en PHPlist

En este post vamos a ver cómo modificar cuatro páginas de destino. Aunque hay más, éstas son las que a mi parecer son más importantes cara a la distribución de una newsletter:

  • Página de agradecimiento
  • Página de confirmación
  • Página de baja
  • Página de suscripción

El motivo por el que cito la página de suscripción en último lugar es porque no es habitual utilizarla, excepto en el caso que el usuario introduzca un correo no válido, pues entonces el sistema nos redirigirá hasta la página de suscripción. Otra opción para evitar esto es programar de manera manual la revisión del correo electrónico introducido por el usuario en lugar de utilizar la función addFieldToCheck() que viene por defecto en el formulario.

Página de agradecimiento

Aquí ya toca ponerse de pleno a retocar código PHP. Has de ir al archivo subscribelib2.php que se encuentra en la carpeta lists > admin. Hacia la línea 349 verás este código:

# personalise the thank you page
   if ($subscribepagedata["thankyoupage"]) {
      $thankyoupage = $subscribepagedata["thankyoupage"];
   }
   else {
      $thankyoupage = '<h3>'.$strThanks.'</h3>'. $strEmailConfirmation;
   }

Vamos a tener que añadir la siguiente línea dos veces:

header ('Location:http://www.esandra.com/gracias');

aquí gracias es la página en la que aterriza el usuario cuando cumplimenta correctamente el formulario de registro. En mi caso concreto se trata de una página php llamada gracias.php y con .htaccess he ocultado la extensión php . Así, una vez editado el código se verá así:


# personalise the thank you page
   if ($subscribepagedata["thankyoupage"]) {
      $thankyoupage = $subscribepagedata["thankyoupage"];
      header ('Location:http://www.esandra.com/gracias');
   }
   else {
      $thankyoupage = '<h3>'.$strThanks.'</h3>'. $strEmailConfirmation;
      header ('Location:http://www.esandra.com/gracias');
   }

Si quieres editar el archivo .htaccess para ocultar las extensiones .php y .html, añade estas líneas al archivo .htacess:


RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule .* $0.php

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule .* $0.html

Página de confirmación

La página de confirmación es en la que aterriza el usuario cuando hace clic en el enlace de confirmación que se le envía. Para editarla, esta vez hemos de ir al archivo index.php que se encuentra dentro de la carpeta lists. Hacia la línea 573 veremos el siguiente código:

 $res = '<title>'.$GLOBALS["strConfirmTitle"].'</title>';
  $res .= $data["header"];
  $res .= '<h1>'.$info.'</h1>';
  $res .= $html;
  $res .= "<P>".$GLOBALS["PoweredBy"].'</p>';
  $res .= $data["footer"];
  return $res;

De nuevo hemos de añadir la siguiente línea:

header ('Location:http://tudominio.com/confirma');

En este caso, confirma será la página web a la que irá a parar el usuario cuando haga clic en el enlace de confirmación que recibe.

El código quedará así:

  header ('Location:http://tudominio.com/confirma');
  $res = '<title>'.$GLOBALS["strConfirmTitle"].'</title>';
  $res .= $data["header"];
  $res .= '<h1>'.$info.'</h1>';
  $res .= $html;
  $res .= "<P>".$GLOBALS["PoweredBy"].'</p>';
  $res .= $data["footer"];
  return $res;

Página de baja

Para la página de baja, aquella a la que va a parar el usuario cuando decide cancelar la suscripción, hemos de utilizar de nuevo el archivo index.php. Hacia la línea 584 veremos el siguiente código:

function unsubscribePage($id) {
  global $data, $tables;
  $res = '<title>'.$GLOBALS["strUnsubscribeTitle"].'</title>'."\n";
  $res .= $data["header"];

Hemos de añadir la siguiente línea de código:

$res = header("Location: http://tudominio.com/baja");

Donde baja es la página en la que aterriza el usuario cuando se da de baja, válgase la redundancia :-)

El código quedará así:

function unsubscribePage($id) {
  global $data, $tables;
  $res = '<title>'.$GLOBALS["strUnsubscribeTitle"].'</title>'."\n";
  $res .= $data["header"];
$res = header("Location: http://tudominio.com/baja");

Página de suscripción

Para la página de suscripción no he sabido encontrar la manera de modificarla desde el código PHP, pero se puede editar desde el panel de administración de PHPlist. La única pega es que aparece el logo de PHPlist en la misma.

Para editarla, simplemente vamos a Subscribe Pages y allí le damos a editar la página. En el apartado header pondremos el CSS inline y todo aquello que vaya entre las etiquetas head.


Comentarios

  • Álvaro

    El artículo lo explica todo muy bien. Solo añadir que hay que tener un poco de cuidado con los envíos (no hacer spam) ya que si la IP del servidor cae en lista negra el posicionamiento de las webs alojadas en él se verán afectadas de forma negativa, estaremos infringiendo las LOPD y LSSI y los correos enviados desde el mismo entrarán a correo basura o serán rechazados desde otros servidores.

    Un Saludo!

  • jose

    Hola alvaro

    Yo tengo mi dedicado con dinahosting y ellos me lo configuraron para que no entrar con spam. Hay que configurar en el config.php nuestro correo de esta forma no se reconoceran como spam ademas de configurar el envio por hora

    */

    # the number of criterias you want to be able to select when sending a message.
    # Useful is is to make it the same as the number of selectable attributes you enter in the
    # system, but that is up to you (selectable = select, radio or checkbox)
    define (“NUMCRITERIAS”,2);

    # if you do not require users to actually sign up to lists, but only want to
    # use the subscribe page as a kind of registration system, you can set this to 1 and
    # users will not receive an error when they do not check a list to subscribe to
    define(“ALLOW_NON_LIST_SUBSCRIBE”,0);

    # batch processing
    # if you are on a shared host, it will probably be appreciated if you don’t send
    # out loads of emails in one go. To do this, you can configure batch processing.
    # Please note, the following two values can be overridden by your ISP by using
    # a server wide configuration. So if you notice these values to be different
    # in reality, that may be the case

    ## if you send the queue using your browser, you may want to consider settings like this
    ## which will send 10 messages and then reload the browser to send the next 10. However, this
    ## will not restrict the sending to any limits, so there’s a good chance you will
    ## go over the limits of your ISP
    define(“MAILQUEUE_BATCH_SIZE”,0);
    define(“MAILQUEUE_BATCH_PERIOD”,5);

    ## if you send the queue using commandline, you can set it to something that complies with the
    ## limits of your ISP, eg 300 messages an hour would be
    # define(“MAILQUEUE_BATCH_SIZE”,300);
    # define(“MAILQUEUE_BATCH_PERIOD”,3600);
    # and then you need to set the cron to run every 5 minutes

    # define the amount of emails you want to send per period. If 0, batch processing
    # is disabled and messages are sent out as fast as possible
    define(“MAILQUEUE_BATCH_SIZE”,300);

    # define the length of one batch processing period, in seconds (3600 is an hour)
    # Please note: this setting has two consequences:
    # 1. it will enforce that the amount of emails sent in the period identified here does not exceed the amount
    # set in MAILQUEUE_BATCH_SIZE
    # 2. there will be a delay of MAILQUEUE_BATCH_PERIOD when running the queue.
    #
    # number 1 is mostly when using commandline queue processing (strongly recommended)
    # number 2 is when using browser queue processing. The browser will reload to send the next
    # batch after the amount of seconds set here

    define(“MAILQUEUE_BATCH_PERIOD”,3600);

    # to avoid overloading the server that sends your email, you can add a little delay
    # between messages that will spread the load of sending
    # you will need to find a good value for your own server
    # value is in seconds, and you can use fractions, eg “0.5” is half a second
    # (or you can play with the autothrottle below)
    define(‘MAILQUEUE_THROTTLE’,7);

    # year ranges. If you use dates, by default the drop down for year will be from
    # three years before until 10 years after this the current value for year. If there
    # is no current value the current year will be used.
    # if you want to use a bigger range you can set the start and end year here
    # be aware that the drop down may become very large.
    # if set to 0 they will use the default behaviour. So I’m afraid you can’t start with
    # year 0. Also be aware not to set the end year to something relatively soon in the
    # future, or it will stop working when you reach that year.
    define(‘DATE_START_YEAR’,0);
    define(‘DATE_END_YEAR’,0);

    # empty value prefix. This can be used to identify values in select attributes
    # that are not allowed to be selected and cause an error “Please enter your …”
    # by using a top value that starts with this string, you can make sure that the
    # selects do not have a default value, that may be accidentally selected
    # eg. “– choose your country”
    define(‘EMPTY_VALUE_PREFIX’,’–‘);

    # admin details for messages
    # if this is enabled phplist will initialise the From in new messages to be the
    # details of the logged in administrator who is sending the message
    # otherwise it will default to the values set in the configure page that identify
    # the From for system messages
    define(‘USE_ADMIN_DETAILS_FOR_MESSAGES’,1);

    # test emails
    # if you send a test email, phplist will by default send you two emails, one in HTML format
    # and the other in Text format. If you set this to 1, you can override this behaviour
    # and only have a test email sent to you that matches the user record of the user that the
    # test emails are sent to
    define(‘SEND_ONE_TESTMAIL’,0);

    Estos creo que son los parámetros correctos y a mi me han funcionado bien

    POr cierto para cuando la cuarta parte

  • jose

    Cuales serían los campos para rellenar, he seguido lo pasos pero la pagina de index.php falla

    Estos son mis valores
    $res = ”.$GLOBALS[“strConfirmTitle”].”;
    $res .= $data[“header”];
    $res .= ”.$info.”;
    $res .= $html;
    $res .= “”.$GLOBALS[“PoweredBy”].”;
    $res .= $data[“footer”];
    return $res;
    Gracias

  • Elcodigodebarras

    Si no queremos que aparezca el powered by Phplist en nuestros emails podemos editar lo siguiente en el archivo config.php

    define (“REGISTER”,0);

    Si queremos eliminar definitivamente el powered by podemos hacerlo modificando el archivo /lists/admin/connect.php y sustituyendo la siguiente linea

    //$PoweredByImage = ‘’;
    por esta otra:
    PoweredByImage = ”;

    Espero sea util el apunte.

    • Sandra

      Muchas gracias por tu aportación :-)

      • Elcodigodebarras

        No se merecen. Gracias a ti, he descubierto paso a paso como ir introduciéndome en phplist desde mi rincón de neófito. En uno de mis viajes por la web buscando información no hace muchos días, me tope con estos metodos para ocultar y eliminar el logo. De php no tengo conocimientos, mas sinembargo lo detallado de tu tutorial me está ayudando, toda vez que llevo mucho tiempo queriendo saber como se programaban las newsletters.
        De nuevo muchas gracias Sandra.