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. 📩