Ante todo para poder hacer en envio de correos en sí deberíamos tener un servidor de correos instalado o algún módulo como SMTP.
Ahora vamos construir un módulo que envie un correo siempre que se cree un nodo de tipo evento (event). El nombre de este módulo será email_on_event_create.
Para ello debemos crear nuestro clasico archivo email_on_event_create.info (este proceso será el común que siempre se hace, por lo que no entraremos en detalle).
Ahora crearemos nuestro archivo email_on_event_create.module y dentro de él debemos poner un hook_entity_insert() en el que detectaremos cada vez que se crea un nodo del tipo evento .
<?php /** * Implements hook_entity_insert(). */ function email_on_event_create_node_insert($node) { if ($node->getType() == 'event') { } }
Luego debemos usar el servicio plugin.manager.mail en el que pondremos los datos que enviaremos utilizando la template que más adelante definiremos en el hook_mail().
<?php /** * Implements hook_entity_insert(). */ function email_on_event_create_node_insert($node) { if ($node->getType() == 'event') { \Drupal::service('plugin.manager.mail')->mail( ); } }
Ahora pondremos los datos que requiere este servicio.
<?php /** * Implements hook_entity_insert(). */ function email_on_event_create_node_insert($node) { if ($node->getType() == 'event') { $to = user@example.com \Drupal::service('plugin.manager.mail')->mail( 'email_on_event_create', //Es el nombre del módulo. 'email_on_event_create', //Es el nombre del template que se usará en el correo, Drupal buscará dicho template en el hook_mail() ya que ahí lo definiremos más adelante. $to, //Es el email a donde se enviarán los correos. 'en', //Es el langcode ['node' => $node, 'subject' => $subject, 'message' => $message] //aquí ponemos el subject y el message (body) del correo ); } }
Luego vamos a usar el hook _mail() en donde definiremos el template email_on_event_create (que podría tener cualquier otro nombre) que usamos hace un momento en el servicio plugin.manager.mail.
Además en este hook, recibiremos el subject y el message que definimos hace un momento en el servicio creado, estos valores vendrán en la variable $params.
/** * Implements hook_mail(). */ function email_on_event_create_mail($key, &$message, $params) { switch ($key) { case 'email_on_event_create': $message['subject'] = $params['subject']; $message['body'][] = $params['message']; break; } }
- Esta es la forma en que podemos crear un template para un correo.
Me pareció interesante el artículo
Añadir nuevo comentario