[Código PHP] Enviar un Email usando PHP

Logo PHPPHP en sus versiones 4, 5 y superiores dispone de una función llamada “mail()” que envía un Email a una dirección de correo electrónico determinada. Esta función es booleana por lo que nos devuelve “true” cuando el Email se ha enviado correctamente y “false” si ha existido algún problema al enviar el correo.

El formato y parámetros que le podemos indicar a la función “mail()” son:

  • mail ( string Para , string Asunto o Titulo , string Mensaje, string Cabeceras, string Parámetros adicionales)

Como comentario, en éste artículo pondremos datos ficticios, como por ejemplo la dirección de correo de destino y los demás parámetros debes de modificarlos a tu gusto para enviar correctamente el Email a quien tú quieras.

Código básico para enviar un Email

El código básico para enviar un Email usando PHP, es indicar a la función “mail()” la siguiente serie de parámetros:

  • Dirección de correo electrónico de destino.
  • Titulo o Asunto que queramos que aparezca en el correo que vamos a enviar.
  • Cuerpo del mensaje, ósea el texto del mensaje que queremos enviar.

Por lo que función “mail()”, quedará de la siguiente manera:

  • mail(Dirección de correo destino, Asunto o titulo del correo, Mensaje del Email)

Si deseamos enviar un correo básico, usando la función “mail()”, a la dirección de correo “usuario@dominio.com”, quedará de la siguiente manera:

<?php
if (mail(“usuario@dominio.com,”El titulo del correo,”Mensaje que queremos enviar“))
{

//Cuando el correo se ha enviado con éxito.
echo “Correo enviado“;
}
else
{

//Cuando ha existido algún error al enviar el correo.
echo “ERROR: El correo no se ha podido enviar“;
}
?>

o también:

<?php
//Configuramos las variables necesarias para la función “mail()”.
$para = “usuario@dominio.com“;
$titulo = “El titulo del correo“;
$mensaje = “Mensaje que queremos enviar“;
if (mail($para, $titulo, $mensaje))
{

//Cuando el correo se ha enviado con éxito.
echo “Correo enviado“;
}
else
{

//Cuando ha existido algún error al enviar el correo.
echo “ERROR: El correo no se ha podido enviar“;
}
?>

Si, por ejemplo, en un campo queremos usar varias líneas, usaremos “\n” para que se muestre un salto de línea y si deseamos realizar un doble salto de línea usaremos “\r\n”, si en el ejemplo anterior en la variable “$mensaje” queremos añadir una nueva línea o una doble línea, el código quedaría de la siguiente manera:

  • Con una línea simple:
    • $mensaje = “Mensaje que queremos enviar\nAdios”;
  • y si queremos insertar una doble línea el código quedara de la siguiente manera:
    • $mensaje = “Mensaje que queremos enviar\r\nAdios”;

Hay que tener en cuenta que los parámetros de la función “mail()” admiten 70 caracteres como máximo, por lo que debemos delimitar el ancho de estas cadenas de caracteres que le pasamos a la función “mail()” para no superar éste ancho de caracteres, para ello disponemos de la función “wordwrap()“, ésta función está incluida en las versiones 4, 5 y superiores de PHP, “wordwrap()” ajusta una cadena de caracteres a un número determinado que le indiquemos, su formato es el siguiente:

  • wordwrap(“Texto”, Número máximo de caracteres);

Como sabemos que la longitud máxima de la línea del mensaje es de 70, el código de la variable “$mensaje”, por ejemplo, quedará de la siguiente manera:

  • $mensaje = wordwrap(“Mensaje que queremos enviar a alguien\r\nAdios”, 70);

Si tenemos en cuenta las dos indicaciones anteriores el código quedaría de la siguiente manera:

<?php
//Configuramos las variables necesarias para la función “mail()”.
$para = wordwrap(“usuario@dominio.com“, 70);
$titulo = wordwrap(“El titulo del correo“, 70);
$mensaje = wordwrap(“Este es un mensaje\nque queremos enviar\r\nAdios“, 70);
if (mail($para, $titulo, $mensaje))
{

//Cuando el correo se ha enviado con éxito.
echo “Correo enviado“;
}
else
{

//Cuando ha existido algún error al enviar el correo.
echo “ERROR: El correo no se ha podido enviar“;
}
?>

Incluir varios destinatarios a la función “mail()”

Si queremos enviar un correo a varios destinatarios, podemos incluir en el parámetro “Para” de la función “mail()” todos los destinatarios que queramos separados por una coma, en el siguiente ejemplo vamos a enviar un Email a las siguientes direcciones de correo, usuario1@dominio.com y usuario2@dominio.com y el código quedará de la siguiente manera:

<?php
//Configuramos las variables necesarias para la función “mail()”.

//Incluimos todos los destinatarios a los que queremos enviar nuestro Email.
$para = wordwrap(“usuario1@dominio.com, usuario2@dominio.com“, 70);
$titulo = wordwrap(“El titulo del correo“, 70);
$mensaje = wordwrap(“Mensaje que queremos enviar a alguien\r\nAdios“, 70);
if (mail($para, $titulo, $mensaje))
{

//Cuando el correo se ha enviado con éxito.
echo “Correo enviado“;
}
else
{

//Cuando ha existido algún error al enviar el correo.
echo “ERROR: El correo no se ha podido enviar“;
}
?>

Parámetros opcionales “Headers o Cabecera”

Existen otros parámetros opcionales llamados “Headers” (Cabeceras) que podemos añadir a nuestro correo opcionalmente. En las cabeceras adicionales que queremos incluir, añadiremos más opciones a nuestro Email (en el caso de tener varias cabeceras, estas deben de estar separadas por “\r\n”, en el caso de que no se reciban los correos debemos de sustituir “\r\n” por “\n” únicamente), usaremos estos Headers para enviar, por ejemplo, una copia del mensaje a otros destinatarios, las cabeceras básicas que se usan típicamente son:

  • Reply-To, indicaremos a que dirección de correo se debe de enviar la respuesta, siempre y cuando esta sea diferente a la incluida en el parámetro opcional “From”.
  • From, donde incluiremos los datos de quien envía el mensaje.
  • Cc, añadiremos las direcciones de correo que queremos que reciban una copia.
  • Bcc, aquí pondremos las direcciones de correo que queden ocultas al destinatario y deseamos que reciban una copia.

Por ejemplo:

<?php
//Configuramos las variables necesarias para la función “mail()”.
$para =wordwrap(“usuario@dominio.com“, 70);
$titulo =wordwrap(“El titulo del correo“, 70);
$mensaje = wordwrap(“Mensaje que queremos enviar a alguien\r\nAdios“, 70);

//Añadimos los datos de la cabecera

//Incluimos un texto de quienes somos, así como nuestra dirección de correo.
$micabecera = “From: Mi nombre<micorreo@dominio.com>” . “\r\n” .
// Añadimos los destinatarios a los que queremos enviar una copia.
Cc: usuario2@dominio.com\r\n“.
// Incluimos los destinatarios ocultos que queremos que reciban una copia.
Bcc: usuario3@dominio.com\r\n
//Indicamos a que dirección de correo a la que se debe enviar la respuesta.
$micabecera = wordwrap(“Reply-To: micorreo@dominio.com\r\n“, 70);
if (mail($para, $titulo, $mensaje, $micabecera))
{

//Cuando el correo se ha enviado con éxito
echo “Correo enviado“;
}
else
{

//Cuando ha existido algún error al enviar el correo
echo “ERROR: El correo no se ha podido enviar“;
}
?>

Parámetros adicionales

Finalmente a la función “mail()” podemos incluirle parámetros adicionales que son opcionales y que no se usan normalmente, pero haremos una pequeña mención de ellos, estos pueden ser:

  • “-f” en donde definimos el Path y la aplicación que vamos a usar para el envío de Emails.

Si usamos Windows y tenemos acceso al fichero “php.ini” tenemos que indicar cuál es el servidor de correo saliente o SMTP y el puerto que vamos a usar para enviar los correos, para ello debemos de buscar el conjunto de valores “[mail function]” del fichero “php.ini”, más adelante encontraremos dos valores que debemos de configurar, estos son “SMTP” que indica el servidor SMTP y smtp_port al que le pasaremos el valor 25 que es el puerto usado para el envío de correos, por lo que php.ini quedará de la siguiente manera:

[mail function]
SMTP = “mismtp.dominio.com” // Servidor SMTP
smtp_port = 25 // Puerto usado por el servidor SMTP

Finalmente si queremos incluir en la función “mail()” y los “Parámetros adicionales”, pero no deseamos incluir “Headers”, entonces al valor “headers” debemos poner un valor nulo, ósea “null”, por lo que la función “mail()” quedará de la siguiente manera:

  • mail (Para , Asunto o Titulo ,Mensaje, null, Parámetros adicionales)

Déjanos tu comentario...

Tu comentario