Downloads
Release notes
- Changes:
- Using
variable_get('mail_line_endings', MAIL_LINE_ENDINGS)rather than justMAIL_LINE_ENDINGSallows override from the config file. - Updated
mailsystem_html_to_text()function based on #299138-148: Improve \Drupal\Core\Utility\Mail::htmlToText(). - Added an explicit dependency on
filter.module. - Improved return-path handling from #131737-112: Ensure that the Return-Path is set when sending mail on both Windows and non-Windows systems.
Provides an Administrative UI and Developers API for safely updating the mail_system configuration variable.
The 6.x branch also provides a Drupal-6 backport of the Drupal-7 mail system.
(New) Requirement
Administrative UI
The administrative interface is at admin/config/system/mailsystem. A screenshot is available.
Used by;
Developers API
A module example with a MailSystemInterface implementation called ExampleMailSystem should add the following in its example.install file:
/** * Implements hook_enable(). */ function example_enable() { mailsystem_set(array('example' => 'ExampleMailSystem')); } /** * Implements hook_disable(). */ function example_disable() { mailsystem_clear(array('example' => 'ExampleMailSystem')); }
The above settings allow mail sent by example to use ExampleMailSystem. To make ExampleMailSystem the site-wide default for sending mail:
mailsystem_set(array(mailsystem_default_id() => 'ExampleMailSystem'));
To restore the default mail system:
mailsystem_set(array(mailsystem_default_id() => mailsystem_default_value()));
Or simply:
mailsystem_set(mailsystem_defaults());
If module example relies on dependency foo and its FooMailSystem class, then the example.install code should like like this:
/** * Implements hook_enable(). */ function example_enable() { mailsystem_set(array('example' => 'FooMailSystem')); } /** * Implements hook_disable(). */ function example_disable() { mailsystem_clear(array('example' => '')); }
If module example only wants to use FooMailSystem when sending emails with a key of examail, then the example.install code should look like this:
/** * Implements hook_enable(). */ function example_enable() { mailsystem_set(array('example_examail' => 'FooMailSystem')); } /** * Implements hook_disable(). */ function example_disable() { mailsystem_clear(array('example_examail' => '')); }
(New in 2.x branch)
To change the site-wide defaults to use the FooMailSystem for formatting messages and the BarMailSystem for sending them:
mailsystem_set( array( mailsystem_default_id() => array( 'format' => 'FooMailSystem', 'mail' => 'BarMailSystem', ), ) );
To change the site-wide defaults to use the FooMailSystem for sending messages, while continuing to use the current system for formatting them:
mailsystem_set( array( mailsystem_default_id() => array( 'mail' => 'FooMailsystem', ), ) );
References
- drupal_mail_system(http://api.drupal.org/api/drupal/includes--mail.inc/function/drupal_mail_system/7) API documentation:
-
api.drupal.org/api/drupal/includes--mail.inc/function/drupal_mail_system/7
- MailSystemInterface API documentation:
-
http://api.drupal.org/api/drupal/includes--mail.inc/interface/MailSystemInterface/7
- Creating HTML formatted mails in Drupal 7