diff --git a/core/includes/mail.inc b/core/includes/mail.inc
index 1f7897e..5694a2e 100644
--- a/core/includes/mail.inc
+++ b/core/includes/mail.inc
@@ -8,7 +8,7 @@
/**
* Auto-detect appropriate line endings for e-mails.
*
- * $conf['mail_line_endings'] will override this setting.
+ * $settings['mail_line_endings'] will override this setting.
*/
define('MAIL_LINE_ENDINGS', isset($_SERVER['WINDIR']) || strpos($_SERVER['SERVER_SOFTWARE'], 'Win32') !== FALSE ? "\r\n" : "\n");
@@ -216,14 +216,14 @@ function drupal_mail($module, $key, $to, $langcode, $params = array(), $from = N
* By default, all messages are sent via PHP's mail() function by the
* Drupal\Core\Mail\PhpMail implementation.
*
- * The selection of a particular implementation is controlled via the variable
- * 'mail_system', which is a keyed array. The default implementation
- * is the class whose name is the value of 'default-system' key. A more specific
- * match first to key and then to module will be used in preference to the
- * default. To specify a different class for all mail sent by one module, set
- * the class name as the value for the key corresponding to the module name. To
- * specify a class for a particular message sent by one module, set the class
- * name as the value for the array key that is the message id, which is
+ * The selection of a particular implementation is controlled via the config
+ * 'system.mail.system', which is a keyed array. The default implementation
+ * is the class whose name is the value of 'default' key. A more specific match
+ * first to key and then to module will be used in preference to the default. To
+ * specify a different class for all mail sent by one module, set the class
+ * name as the value for the key corresponding to the module name. To specify
+ * a class for a particular message sent by one module, set the class name as
+ * the value for the array key that is the message id, which is
* "${module}_${key}".
*
* For example to debug all mail sent by the user module by logging it to a
@@ -231,7 +231,7 @@ function drupal_mail($module, $key, $to, $langcode, $params = array(), $from = N
*
* @code
* array(
- * 'default-system' => 'Drupal\Core\Mail\PhpMail',
+ * 'default' => 'Drupal\Core\Mail\PhpMail',
* 'user' => 'DevelMailLog',
* );
* @endcode
@@ -241,7 +241,7 @@ function drupal_mail($module, $key, $to, $langcode, $params = array(), $from = N
*
* @code
* array(
- * 'default-system' => 'Drupal\Core\Mail\PhpMail',
+ * 'default' => 'Drupal\Core\Mail\PhpMail',
* 'user' => 'DevelMailLog',
* 'contact_page_autoreply' => 'DrupalDevNullMailSend',
* );
@@ -260,13 +260,15 @@ function drupal_mail($module, $key, $to, $langcode, $params = array(), $from = N
* alter hook in drupal_mail() would have been {$module}_{$key}.
*
* @return Drupal\Core\Mail\MailInterface
+ *
+ * @throws \Exception
*/
function drupal_mail_system($module, $key) {
$instances = &drupal_static(__FUNCTION__, array());
$id = $module . '_' . $key;
- $configuration = variable_get('mail_system', array('default-system' => 'Drupal\Core\Mail\PhpMail'));
+ $configuration = config('system.mail')->get('default');
// Look for overrides for the default class, starting from the most specific
// id, and falling back to the module name.
@@ -277,7 +279,7 @@ function drupal_mail_system($module, $key) {
$class = $configuration[$module];
}
else {
- $class = $configuration['default-system'];
+ $class = $configuration['default'];
}
if (empty($instances[$class])) {
@@ -506,8 +508,9 @@ function drupal_html_to_text($string, $allowed_tags = NULL) {
if (isset($casing)) {
$chunk = $casing($chunk);
}
+ $line_endings = settings()->get('mail_line_endings', MAIL_LINE_ENDINGS);
// Format it and apply the current indentation.
- $output .= drupal_wrap_mail($chunk, implode('', $indent)) . MAIL_LINE_ENDINGS;
+ $output .= drupal_wrap_mail($chunk, implode('', $indent)) . $line_endings;
// Remove non-quotation markers from indentation.
$indent = array_map('_drupal_html_to_text_clean', $indent);
}
diff --git a/core/lib/Drupal/Core/Mail/PhpMail.php b/core/lib/Drupal/Core/Mail/PhpMail.php
index f5ec995..580a824 100644
--- a/core/lib/Drupal/Core/Mail/PhpMail.php
+++ b/core/lib/Drupal/Core/Mail/PhpMail.php
@@ -59,13 +59,13 @@ public function mail(array $message) {
foreach ($message['headers'] as $name => $value) {
$mimeheaders[] = $name . ': ' . mime_header_encode($value);
}
- $line_endings = variable_get('mail_line_endings', MAIL_LINE_ENDINGS);
+ $line_endings = settings()->get('mail_line_endings', MAIL_LINE_ENDINGS);
// Prepare mail commands.
$mail_subject = mime_header_encode($message['subject']);
// Note: e-mail uses CRLF for line-endings. PHP's API requires LF
// on Unix and CRLF on Windows. Drupal automatically guesses the
// line-ending format appropriate for your system. If you need to
- // override this, adjust $conf['mail_line_endings'] in settings.php.
+ // override this, adjust $settings['mail_line_endings'] in settings.php.
$mail_body = preg_replace('@\r?\n@', $line_endings, $message['body']);
// For headers, PHP's API suggests that we use CRLF normally,
// but some MTAs incorrectly replace LF with CRLF. See #234403.
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
index 1bf8949..ae8dddf 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
@@ -835,7 +835,7 @@ protected function setUp() {
$this->resetAll();
// Use the test mail class instead of the default mail handler class.
- variable_set('mail_system', array('default-system' => 'Drupal\Core\Mail\VariableLog'));
+ config('system.mail')->set('default', 'Drupal\Core\Mail\VariableLog')->save();
drupal_set_time_limit($this->timeLimit);
// Temporary fix so that when running from run-tests.sh we don't get an
diff --git a/core/modules/system/lib/Drupal/system/Tests/Mail/HtmlToTextTest.php b/core/modules/system/lib/Drupal/system/Tests/Mail/HtmlToTextTest.php
index 5302c8d..f93b40f 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Mail/HtmlToTextTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Mail/HtmlToTextTest.php
@@ -348,11 +348,8 @@ public function testDrupalHtmlToTextParagraphs() {
public function testVeryLongLineWrap() {
$input = 'Drupal
' . str_repeat('x', 2100) . '>
Drupal';
$output = drupal_html_to_text($input);
- // This awkward construct comes from includes/mail.inc lines 8-13.
- $eol = variable_get('mail_line_endings', MAIL_LINE_ENDINGS);
- // We must use strlen() rather than drupal_strlen() in order to count
- // octets rather than characters.
- $line_length_limit = 1000 - drupal_strlen($eol);
+ $eol = settings()->get('mail_line_endings', MAIL_LINE_ENDINGS);
+
$maximum_line_length = 0;
foreach (explode($eol, $output) as $line) {
// We must use strlen() rather than drupal_strlen() in order to count
diff --git a/core/modules/system/lib/Drupal/system/Tests/Mail/MailTest.php b/core/modules/system/lib/Drupal/system/Tests/Mail/MailTest.php
index bb72d29..fa026c0 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Mail/MailTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Mail/MailTest.php
@@ -42,7 +42,7 @@ function setUp() {
parent::setUp();
// Set MailTestCase (i.e. this class) as the SMTP library
- variable_set('mail_system', array('default-system' => 'Drupal\system\Tests\Mail\MailTest'));
+ config('system.mail')->set('default', 'Drupal\system\Tests\Mail\MailTest')->save();
}
/**
@@ -119,4 +119,3 @@ public function mail(array $message) {
self::$sent_message = $message;
}
}
-
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index 5a0aade..32f4181 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -2214,6 +2214,17 @@ function system_update_8046() {
}
/**
+ * Converts mail settings to config.
+ *
+ * @ingroup config_upgrade
+ */
+function system_update_8047() {
+ update_variables_to_config('system.mail', array(
+ 'mail_system' => 'default',
+ ));
+}
+
+/**
* @} End of "defgroup updates-7.x-to-8.x".
* The next series of updates should start at 9000.
*/