Enviar Correos por código en Drupal 9 y 10

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.

  1. 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).

     

  2. 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') {
    
      }
    }
  3. 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(
    
        );  
      }
    }
  4. 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
        );  
      }
    }
  5. 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;
      }
    }
  6. Esta es la forma en que podemos crear un template para un correo.

Me pareció interesante el artículo

Deseo más información

O también puedes comunicarte con nosotros.

por whatsapp por whatsapp

Añadir nuevo comentario

Me gustaría más información sobre:

CAPTCHA