2010-07-14 17 views
9

Necesito enviar un correo electrónico desde mi código php personalizado utilizando el servicio Drupal.¿Cómo enviar correos electrónicos desde un código PHP personalizado?

En otras palabras, me he dado cuenta de que Drupal puede enviar correos electrónicos fácilmente, así que me gustaría saber cómo puedo usar las bibliotecas de drupal para enviar los correos electrónicos, en lugar de usar bibliotecas externas.

Respuesta

8

Necesita usar drupal_mail(), y defina hook_mail() en su módulo.

A continuación, llamará al primero y la información del correo electrónico se establecerá en la segunda. (Véase el ejemplo en la página de documentación para drupal_mail().)

+0

si tengo mi código php en un script, ¿cómo invoco el enlace correcto? En otras palabras, si invoco drupal_mail(), ¿cómo puedo hacer referencia al derecho hook_mail()? – aneuryzm

+0

Lea la página de documentación a la que se refiere Pascal. Cita: '// example_mail() se llamará en función del primer parámetro drupal_mail().' – marcvangend

7
$message = array(
    'to' => '[email protected]', 
    'subject' => t('Example subject'), 
    'body' => t('Example body'), 
    'headers' => array('From' => '[email protected]'), 
); 

drupal_mail_send($message); 

Advertencias:

  • Debido drupal_mail() no se llama, otros módulos no serán capaces de hook_mail_alter() su salida, que puede causar inesperado resultados.
  • drupal_mail_send() es ignorante sobre qué idioma enviar el mensaje, por lo que esto debe determinarse de antemano.
  • Tendrá que especificar manualmente cualquier otro encabezado de correo electrónico que se requiera ('Content-Type', etc.). Estos normalmente se ocupan de usted por drupal_mail(). En caso de que su módulo envíe varios tipos diferentes de correos electrónicos y desea que esas plantillas de correo electrónico sean editables (por ejemplo, varias notificaciones de registro/restablecimiento de contraseña/etc. Del módulo de usuario), usar hook_mail() sigue siendo la mejor manera ir.

Esto es lo que se informó en a comment en la documentación de drupal_mail(). Si las advertencias no son importantes en su caso, puede usar el fragmento de informe.

4

Recomendaría utilizar mimemail. Es un módulo contrib que le permitirá enviar correos HTML (+ archivos adjuntos) o mensajes de texto simple con facilidad. He aquí un extracto del archivo Léame:

la función mimemail():

  • $ emisor - una dirección de objeto de usuario o correo electrónico
  • $ receptor - una dirección de objeto de usuario o correo electrónico
  • $ tema - línea de asunto
  • $ cuerpo - el cuerpo del texto en formato html
  • $ texto plano - booleano, si desea enviar mensajes en texto plano solamente (por defecto falso)

Este módulo crea una preferencia de usuario para recibir mensajes de texto simple. Esta preferencia será respetada por todas las llamadas a mimemail()

Enlace: http://drupal.org/project/mimemail

espero que esto le ayudará!

+0

gracias por este consejo. Aunque la solución a la pregunta era simplemente drupal_mail, ahora estoy usando mimemail porque necesito enviar archivos adjuntos. Por favor, consulte esta mi nueva pregunta si tiene tiempo: http://stackoverflow.com/questions/3258760/drupal-mimemail-e-mails-without-attachment – aneuryzm

Cuestiones relacionadas