This is a quick and easy solution to send an email from Drupal using PHP, i.e a custom module. you will do it in 2 steps (I assume your module is called “mod”):
- Define mod_mail() (implementing
hook_mail()), this function will prepare the email - Send the email using drupal_mail()
Define mod_mail()
/**
* Implementation of hook_mail.
*/
function mod_mail($key, &$message, $params) {
switch ($key) {
case 'basic':
$message['subject'] = t('Greetings');
$message['body'] = array(t('I just wanted to say hello!'));
break;
case 'advanced':
$message['subject'] = t('Hello @username', array('@username' => $params['username']));
$message['body'] = array(t('Thank you for joining @site_name!', array('@site_name' => $params['site_name'])));
break;
default:
; /* Do nothing */
}
}
Sending the email
In order to send the email you need to decide on 2 parameters (optionally, a 3rd):
- The recipent (email address)
- The key, in this example this would be ‘basic’ or ‘advanced’
- The $params to pass to
mod_mail(), in our example it’s only needed if we are using the key ‘advanced’
// Basic example ($key = 'basic')
$email = "someone@example.com";
drupal_mail('mod', 'basic', $email, language_default());
// Advanced example ($key = 'advanced')
$email = "someone@example.com";
$params = array(
'username' = 'Someone',
'site_name' = variable_get('site_name'),
);
drupal_mail('mod', 'advanced', $email, language_default(), $params);