Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to send e-mails from custom PHP code?

I need to send an e-mail from my custom php code using the Drupal service.

In other words, I've noticed Drupal can easily send emails so I would like to know how can I use drupal libraries to send the emails, instead of using external libraries.

like image 345
aneuryzm Avatar asked Jul 14 '10 15:07

aneuryzm


2 Answers

You need to use drupal_mail(), and define hook_mail() in your module.

You'll then call the first one, and the e-mail information will be set by the second one. (See the example on the documentation page for drupal_mail().)

like image 65
Pascal MARTIN Avatar answered Oct 11 '22 19:10

Pascal MARTIN


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

drupal_mail_send($message);

Caveats:

  • Because drupal_mail() isn't called, other modules will not be able to hook_mail_alter() your output, which can cause unexpected results.
  • drupal_mail_send() is ignorant about which language to send the message in, so this needs to be figured out beforehand.
  • You'll have to manually specify any other e-mail headers that are required ('Content-Type', etc.). These are normally taken care of for you by drupal_mail(). In the case where your module sends several different types of emails, and you want those email templates to be editable (for example, user module's various registration notification/password reset/etc. e-mails), using hook_mail() is still the best way to go.

This is what reported in a comment in the documentation for drupal_mail(). If the caveats are not important in your case, then you can use the reported snippet.

like image 23
apaderno Avatar answered Oct 11 '22 17:10

apaderno