Cuando quiero mandar un email desde un módulo personalizado lo que suelo hacer es primero crear el fichero templates/mail.html dentro de la carpeta del módulo. En este fichero tebndremos el html que se manda por correo y si queremos personalizar un texto normalmente le pongo el nombre de variables entre corchetes. Por ejemplo:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>el title</title> </head> <body> Este es un email con el siguiente mensaje personalizado: {{mensaje}} </body> </html>
Lo siguiente, en la programación de nuestro módulo plantamos el siguiente código:
$mailManager = \Drupal::service('plugin.manager.mail'); $module = 'my_modulo'; $key = 'email_contacto'; // clave que identifica el email // configuración del envio $html = file_get_contents(str_replace('src/Form', 'templates/mail.html', __DIR__)); $to = 'email@prueba.es'; $params['subject'] = 'el asunto del email '; $params['message'] = str_replace('{{mensaje}}', 'el texto a sustituir', $html) ; $params['Cc'] = []; $langcode = \Drupal::currentUser()->getPreferredLangcode(); $send = true; $result = $mailManager->mail($module, $key, $to, $langcode, $params, NULL, $send); // guardamos en el log de Drupal el resultado del envio $message = ($result['result'] !== true)?'Se ha producido un error en el envio de email':'Email enviado'; \Drupal::logger('contactForm')->notice($message);
Por ultimo, en el fichero .modulo especificamos el siguiente hook:
use Drupal\Core\Mail\MailManagerInterface; use Drupal\Component\Utility\SafeMarkup; use Drupal\Component\Utility\Html; function my_modulo_mail($key, &$message, $params) { $options = array( 'langcode' => $message['langcode'], ); switch ($key) { case 'email_contacto': $header = array( 'MIME-Version' => '1.0', 'Content-Type' => 'text/html; charset=UTF-8; format=flowed; delsp=yes', 'Content-Transfer-Encoding' => '8Bit', 'X-Mailer' => 'Drupal' ); if(count($params['Cc'])>0) $header['Cc'] = implode(',', $params['Cc']); $message['headers'] = $header; $message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed; delsp=yes'; $message['from'] = \Drupal::config('system.site')->get('mail'); $message['subject'] = $params['subject']; $message['body'][] = $params['message']; break; } }
0 Comentarios.