Enviar email con archivos adjuntos usando messaging y mimemail

Hace unos días estuve buscando la forma de enviar correos electrónicos usando el modulo messaging, y me encontré con varios inconvenientes. 

Necesitaba enviar emails en formato html y con archivos adjuntos, así que instalé el módulo mimemail junto con el módulo notifications.

Luego de leer un poco acerca de estos módulos me enteré que el modulo notifications no envia los archivos adjuntos de los articulos (nodos) y que para realizar esta tarea hacía falta instalar el módulo notification files.

Lo instalé siguiendo al pié de la letra las instrucciones, pero simplemente no funcionó. asi que hice una revisión del código. Me encontré con que el módulo mimemail hace esta validación

<?php
foreach ($attachments as $a) {
  $a = (object) $a;
    if($a->list) {
      _mimemail_file($a->filepath, $a->filename, $a->filemime, 'attachment');
      $parts = array_merge($parts, _mimemail_file());
   }
}
?>

pero el módulo notification files no envía un elemento list dentro de la variable $attachments.

Decidí enviar mis emails usando la API de messaging y luego de muchas vueltas resultó este código:

<?php
$message = array();
$message['subject'] = $node->title;
$message['body']['header'] = '';
$message['body']['content'] = $node->body;
$message['body']['footer'] = '';

$a = array();
$att = array();
$a = array_slice($node->files, 0, 1);  // $a = primer elemento del array $node->files
$att['fid'] = $a['fid'];
$att['filepath'] = $a['filepath'];
$att['filename'] = $a['filename'];
$att['filemime'] = $a['filemime'];
$att['list'] = 1;                     // Muy importante: usado por mimemail
$message['files'][$fid] = $att;
messaging_message_send_user ($author, $message, 'mimemail');
?>

Lo dejo aquí porque veo que le puede ser útil a alguien que quiera, como yo, enviar correos electrónicos con archivos adjuntos o simplemente tener un mayor control sobre los correos que envía.

 

 

Comentarios

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.
By submitting this form, you accept the Mollom privacy policy.