diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-08-31 18:30:27 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-08-31 18:30:27 +0000 |
commit | ee59107c23a0c657d87550cca3fe601e5314992c (patch) | |
tree | 34d739b06e166328784b4423ccb6599c2aab27b7 /modules/system/mail.sending.inc | |
parent | 701d06521766ec81599a41f3d262047e12a9f820 (diff) | |
download | brdo-ee59107c23a0c657d87550cca3fe601e5314992c.tar.gz brdo-ee59107c23a0c657d87550cca3fe601e5314992c.tar.bz2 |
#331180 by pwolanin and Rob Loach: Added pluggable smtp/mail framework.
Diffstat (limited to 'modules/system/mail.sending.inc')
-rw-r--r-- | modules/system/mail.sending.inc | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/modules/system/mail.sending.inc b/modules/system/mail.sending.inc new file mode 100644 index 000000000..6533de07d --- /dev/null +++ b/modules/system/mail.sending.inc @@ -0,0 +1,62 @@ +<?php +// $Id$ + +/** + * @file + * Drupal core implementations of the DrupalMailSendingInterface. + */ + +/** + * The default Drupal mail sending library using PHP's mail function. + */ +class DefaultMailSystem implements MailSystemInterface { + /** + * Send an e-mail message, using Drupal variables and default settings. + * @see http://php.net/manual/en/function.mail.php the PHP function reference + * for mail(). + * @see drupal_mail() for information on how $message is composed. + * + * @param $message + * Message array as described by DrupalMailSendingInterface. + * @return + * TRUE if the mail was successfully accepted, otherwise FALSE. + */ + public function mail(array $message) { + $mimeheaders = array(); + foreach ($message['headers'] as $name => $value) { + $mimeheaders[] = $name . ': ' . mime_header_encode($value); + } + return mail( + $message['to'], + mime_header_encode($message['subject']), + // Note: e-mail uses CRLF for line-endings, but PHP's API requires LF. + // They will appear correctly in the actual e-mail that is sent. + str_replace("\r", '', $message['body']), + // For headers, PHP's API suggests that we use CRLF normally, + // but some MTAs incorrectly replace LF with CRLF. See #234403. + join("\n", $mimeheaders) + ); + } +} + +/** + * A mail sending implementation that captures sent messages to a variable. + * + * This class is for running tests or for development. + */ +class TestingMailSystem implements MailSystemInterface { + + /** + * Accept an e-mail message and store it in a variable. + * + * @param $message + * An e-mail message. + */ + public function mail(array $message) { + $captured_emails = variable_get('drupal_test_email_collector', array()); + $captured_emails[] = $message; + variable_set('drupal_test_email_collector', $captured_emails); + return TRUE; + } +} + |