Index of /grav/web/modules/contrib/mailsystem

Icon  Name                    Last modified      Size  Description
[PARENTDIR] Parent Directory - [DIR] config/ 2026-02-11 21:48 - [DIR] migrations/ 2026-02-11 21:53 - [DIR] src/ 2026-02-11 21:53 - [DIR] tests/ 2026-02-11 21:48 - [   ] composer.json 2026-02-11 21:52 134 [   ] mailsystem.links.men..> 2026-02-11 21:52 178 [   ] mailsystem.permissio..> 2026-02-11 21:52 188 [   ] mailsystem.routing.yml 2026-02-11 21:52 218 [   ] mailsystem.info.yml 2026-02-11 21:52 378 [   ] mailsystem.module 2026-02-11 21:52 2.0K [TXT] README.txt 2026-02-11 21:52 3.6K [   ] README.markdown 2026-02-11 21:52 3.6K [TXT] README.html 2026-02-11 21:52 4.4K [   ] .gitlab-ci.yml 2026-02-11 21:52 4.8K [IMG] logo.png 2026-02-11 21:52 9.6K [TXT] LICENSE.txt 2026-02-11 21:52 18K

Mail System

Provides an Administrative UI and Developers API for safely updating the mail_system configuration variable.

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(['example' => 'ExampleMailSystem']);
}
/**
 * Implements hook_disable().
 */
function example_disable() {
  mailsystem_clear(['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([mailsystem_default_id() => 'ExampleMailSystem']);

To restore the default mail system:

mailsystem_set([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(['example' => 'FooMailSystem']);
}
/**
 * Implements hook_disable().
 */
function example_disable() {
  mailsystem_clear(['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(['example_examail' => 'FooMailSystem']);
}
/**
 * Implements hook_disable().
 */
function example_disable() {
  mailsystem_clear(['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(
  [
    mailsystem_default_id() => [
      '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(
  [
    mailsystem_default_id() => [
      'mail' => 'FooMailsystem',
    ],
  ]
);

References

drupal_mail_system() API documentation:

api.drupal.org/api/drupal/includes--mail.inc/function/drupal_mail_system

MailSystemInterface API documentation:

api.drupal.org/api/drupal/includes--mail.inc/interface/MailSystemInterface

Creating HTML formatted mails in Drupal 7:

drupal.org/node/900794