Estoy creando un módulo simple que enviará correos electrónicos HTML a los usuarios para ofertas en nuestro sitio web.
He buscado mucho, pero no puedo encontrar una solución adecuada para Drupal. Ahora puedo enviar correos pero texto sin formato.
¿Qué es un procedimiento paso a paso para enviar correos electrónicos HTML en Drupal 7?
function example_form_submit( $form,&$form_state) {
$friend_email=$form_state['values']['friend_email'];
$mailto =$friend_email; //gift to a friend
$mailfrom ='[email protected]';
$subject = "another message for HTML email from example.com";
$body="<h2 style='font-size:28px;color:red;'>Hello EMAIL, i here i want to be <b>bolded</b></h2>";
if (drupal_mail('example', 'send_gift', $mailto, language_default(),$params,$mailfrom,TRUE)) {
drupal_set_message(t('Your gift was sent successfully!!!'));
}
else {
drupal_set_message(t('<font color="red">Error occured while sending your mail!!!</font>'));
}
/****hook_mail*/
function example_mail($key,&$message,$params) {
$language = $message['language'];
switch ($key) {
case 'send_gift':
$message['subject']=t($params['subject'], $var, $language->language);
$message['body'][]=$params['body'];
$message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed';
break;
}
}
Respuestas:
Como mencionó geoff, una opción sería usar el módulo Mime Mail, pero también puede habilitar su módulo personalizado para enviar correos electrónicos HTML con algún código adicional. En resumen, necesitaría alterar la
mail_system
variable y escribir su propia implementación deMailSystemInterface
. Un ejemplo de eso es el siguiente código.Dentro de 'mymodule.install':
Dentro de 'mymodule.module':
Tendría que reemplazar las instancias de mymodule con el nombre de su módulo real y luego deshabilitar y volver a habilitar su módulo para cambiar la variable después de lo cual las cosas deberían estar funcionando. Para ver un ejemplo completo, puede consultar mi respuesta aquí . Además, esta página en drupal.org es de donde originalmente obtuve toda la información.
fuente
El módulo Mime Mail es casi seguro lo que está buscando.
fuente
También es posible que desee ver el módulo Swift Mailer. Le permite enviar correos electrónicos HTML con archivos adjuntos regulares y en línea (como imágenes o archivos). Además, también es capaz de generar automáticamente versiones de texto sin formato basadas en el correo electrónico HTML.
Puedes echarle un vistazo http://www.drupal.org/project/swiftmailer
Para el registro: soy el autor y mantenedor del módulo.
fuente
No está enviando HTML adecuado, solo está incluyendo etiquetas H1 y B, probablemente también necesite incluir etiquetas HTML completas a partir de
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
fuente
Ninguna de las respuestas anteriores funcionó para mí, así que aquí está mi opinión sobre la pregunta original.
En primer lugar, instale y habilite el módulo Mime Mail . Puede leer el archivo README.txt para obtener instrucciones completas sobre cómo usarlo. Te daré la versión corta.
Debe habilitar Mime Mail para su módulo. Puedes hacer esto usando
hook_enable
ohook_update_N
enexample.install
:Cuando vaya a
admin/config/system/mailsystem
, verá que se ha agregado una nueva entrada para su módulo:Ahora ya no necesita especificar ningún
text/html
encabezado, Mime Mail se encarga de esto. Entonces no necesitas esto:Si lo desea, puede agregar
$message['plaintext']
a su correo una alternativa que no sea HTML, pero esto no es obligatorio.¡Eso es!
fuente