Enviar correos usando wp_mail() de WordPress

- mayo 02, 2018

WordPress utiliza su propia función de correo electrónico para el envío de ellos la cual es llamada wp_mail() la cual pueden mirar mas al detalle en el Codex de WordPress.

Para enviar un email con esta función es necesario manejar la siguiente sintaxis:

wp_mail( $to, $subject, $message, $headers, $attachments );

En donde los parámetros a enviar serian:

$to: (string|array) (Required) acá es posible agregar el email a donde se enviara el correo electrónico el cual puede ser una matriz o lista de multiples direcciones separada por comas (,) y es un campo obligatorio.

$subject: (string) (Required) el asunto del correo que debe de ser obligatorio.

$message: (string) (Required) acá agregaremos todo el contenido del mensaje que se envía que debe ser obligatorio.

$headers: (string|array) (Optional) los headers o encabezados corresponden a elementos adicionales de un mensaje de correo como puede ser “DE:” , “C.C:”, “CCO:” para especificar de donde procede el email, si se desea enviar con copia o copia oculta.

$attachments: (string|array) (Optional) estos son los archivos adjuntos en el caso de que deseemos enviarlos también.

Un ejemplo simple de como podríamos enviar utilizando solo los parámetros obligatorios

 

wp_mail("[email protected]", "Ejemplo de la función mail en WP", "Este es un ejemplo del contenido de del mensaje de la funcion wp_mail() de WordPress");

Establecer el formato de contenido en el parámetro $message HTML o text.

El contenido del mensaje enviado puede ser de tipo HTML si deseamos darle un poco mas personalización o también de tipo texto plano si no necesitamos mucho formato, solo si necesitamos enviar etiquetas HTML sera necesario establecer el tipo de contenido:

wp_mail( ‘[email protected]’, ‘Ejemplo de la función mail en WP’, ‘<h1>Este es un ejemplo del contenido de del mensaje de la funcion wp_mail() de WordPress</h1>’ );

function tipo_de_contenido_html() {
     return ‘text/html’;
}

add_filter( ‘wp_mail_content_type’, ‘tipo_de_contenido_html’ );

Nótese que agregamos la etiqueta <h1> dentro del contenido como ejemplo.

Utilizando el parámetro $headers en la función wp_mail() de WP

Como se explico anteriormente por medio del parámetro $headers podemos adicionar información a nuestro mensaje como por ejemplo de donde viene el mensajes, enviar una copia entre otros, como lo podemos realizar pues de la siguiente manera:

$headers[]= “From: Andres Dev <[email protected]>”;
$headers[]= “Cc: Persona1 <[email protected]>”;
$headers[]= “Bcc: Persona2 <[email protected]>”;

En los anteriores header estamos indicando de donde proviene el mensaje, estamos enviando el mensaje con copia a otro destinatario y además también lo enviamos de forma oculta a un segundo destinatario.

Enviando un archivo con el parámetro $attachments

El envío de archivos adjuntos también es posible como los enviamos desde nuestro email tradicional, veamos un ejemplo de como podemos hacerlo.

$attachments = array (WP_CONTENT_DIR.’/uploads/archivo.png’);

En este caso se genera un array al cual le pasamos la dirección de la carpeta /wp_content y luego el directorio donde se encuentra nuestro archivo, en este caso una imagen.

Enviemos nuestro email usando SMTP dentro de WordPress

Antes de utilizar la función wp_mail() se requiere configurar SMTP en nuestro servidor para que puedan salir los email y en este caso utilizar la clase PHPMailer ya que esta clase contiene la configuración SMTP y es responsable de enviar correos electrónicos. Para utilizar la clase PHPMailer debemos de usar el action phpmailer_init de la siguiente forma, cabe recordar que podemos realizar esta modificación desde nuestro archivo functions.php.

add_action( 'phpmailer_init', 'configuracion_smtp' );

function configuracion_smtp( PHPMailer $phpmailer ){

    $phpmailer->isSMTP(); 
    $phpmailer->Host = 'mail.dominio.com';
    $phpmailer->SMTPAuth = true;
    $phpmailer->Port = 25;
    $phpmailer->Username = ’Nombre de usuario';
    $phpmailer->Password = ‘Contraseña';
    $phpmailer->SMTPSecure = false;
    $phpmailer->From = 'From Email;
    $phpmailer->FromName=’Nombre del remitente';
}
  • En esta función llamamos al parámetro isSMTP() para realizar la conexión SMTP (Simple Mail Transfer Protocol).
  • Es importante tener definido el nombre del host que vamos a utilizar el cual por lo general no los entrega la compañía de hosting que contratemos o también es posible realizarlo con empresas como Gmail o Yahoo, lo cual requiere de un tipo de configuración adicional.
  • Se establece el SMTPAuth en verdadero con el fin de permitir la autenticación segura para enviar mensajes de correo.
  • El puerto 25 es el utilizado para la salida de emails por defecto en muchos servidores.
  • Es importante loqueamos con usuario y contraseña para poder enviar los mensajes.
  • El parámetro SMTLSecure tiene que ver con la autenticación y cifrado que queremos manejar,  en este caso lo utilizaremos en false el cual utilizara el protocolo TLS del cual pueden investigar mucho mas aquí.
  • Al final escribimos el email y el nombre del remitente del mensaje, recordemos que en los headers de la función wp_mail() también fueron definidos pero por jerarquía utilizará los que estén mas arriba en este caso los de la función wp_mail() de WordPress.

Validar el envío de nuestro mensaje de correo

Siempre es importante tener un registro de errores en caso de que algo llegue a fallar, podemos realizar un pequeño truco para revisar si algo a fallado.

if(!$phpmailer ->Send()) {

    echo ‘El mensaje no se puedo enviar';
    echo 'Mailer Error: ' . $phpmailer->ErrorInfo;
    exit;

}

Simplemente preguntando si el $phpmailer no se envío.

Y así de simple podemos utilizar la función wp_mail() de WordPress para enviar nuestros mensajes, podemos utilizarla directamente en el archivo functions.php o si la queremos para utilizar dentro de nuestro plugin.

No olvides compartir si te ha gustado o dejar en los comentarios si la utilizaste en un proyecto en especifico. 📩

Tags , , ,

Recibirás cada semana todas nuestras actualizaciones
Puedes estar tranquilo que nunca te enviaremos SPAM
SOBRE EL AUTOR

Freelancer del mundo web y WordPressero ya hace más de 9 años creando desarrollos custom para clientes, bloguero de profesión para ayudar a nuestra comunidad, runner en la ciudad que me encuentre. Me interesé por la tecnología desde que mi papá trajo a casa la primera computadora que fue como abrirme la puerta a un mundo nuevo que todavía sigue en desarrollo. Soy de Colombia pero ahora vivo en Montreal comiendo Poutine y disfrutando de sus temperaturas bajo cero.

¿Tienes un proyecto en mente? Hagámoslo real

CONTACTAR