Index of /modules/mailsystem

[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory   -  
[TXT]LICENSE.txt 2020-04-10 12:15 18K 
[   ]composer.json 2020-04-10 12:15 188  
[DIR]config/ 2024-07-24 11:07 -  
[   ]mailsystem.info.yml 2020-04-10 12:15 373  
[   ]mailsystem.links.men..>2020-04-10 12:15 178  
[   ]mailsystem.module 2020-04-10 12:15 2.0K 
[   ]mailsystem.permissio..>2020-04-10 12:15 188  
[   ]mailsystem.routing.yml 2020-04-10 12:15 218  
[DIR]src/ 2024-07-24 11:07 -  
[DIR]tests/ 2024-07-24 11:07 -  

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