/** * Create a new mailer to send any mail from the application. * * Note: The mailer is opened in persistent mode. * * Note: You probably don't want to call this directly. Get a reference * to the mailer through the container. * * @return Mail */ public static function createMailer() { $mailingInfo = Civi::settings()->get('mailing_backend'); if ($mailingInfo['outBound_option'] == CRM_Mailing_Config::OUTBOUND_OPTION_REDIRECT_TO_DB || defined('CIVICRM_MAILER_SPOOL') && CIVICRM_MAILER_SPOOL) { $mailer = self::_createMailer('CRM_Mailing_BAO_Spool', array()); } elseif ($mailingInfo['outBound_option'] == CRM_Mailing_Config::OUTBOUND_OPTION_SMTP) { if ($mailingInfo['smtpServer'] == '' || !$mailingInfo['smtpServer']) { CRM_Core_Error::debug_log_message(ts('There is no valid smtp server setting. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the SMTP Server.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1')))); CRM_Core_Error::fatal(ts('There is no valid smtp server setting. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the SMTP Server.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1')))); } $params['host'] = $mailingInfo['smtpServer'] ? $mailingInfo['smtpServer'] : 'localhost'; $params['port'] = $mailingInfo['smtpPort'] ? $mailingInfo['smtpPort'] : 25; if ($mailingInfo['smtpAuth']) { $params['username'] = $mailingInfo['smtpUsername']; $params['password'] = CRM_Utils_Crypt::decrypt($mailingInfo['smtpPassword']); $params['auth'] = TRUE; } else { $params['auth'] = FALSE; } // set the localhost value, CRM-3153 $params['localhost'] = CRM_Utils_Array::value('SERVER_NAME', $_SERVER, 'localhost'); // also set the timeout value, lets set it to 30 seconds // CRM-7510 $params['timeout'] = 30; // CRM-9349 $params['persist'] = TRUE; $mailer = self::_createMailer('smtp', $params); } elseif ($mailingInfo['outBound_option'] == CRM_Mailing_Config::OUTBOUND_OPTION_SENDMAIL) { if ($mailingInfo['sendmail_path'] == '' || !$mailingInfo['sendmail_path']) { CRM_Core_Error::debug_log_message(ts('There is no valid sendmail path setting. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the sendmail server.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1')))); CRM_Core_Error::fatal(ts('There is no valid sendmail path setting. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the sendmail server.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1')))); } $params['sendmail_path'] = $mailingInfo['sendmail_path']; $params['sendmail_args'] = $mailingInfo['sendmail_args']; $mailer = self::_createMailer('sendmail', $params); } elseif ($mailingInfo['outBound_option'] == CRM_Mailing_Config::OUTBOUND_OPTION_MAIL) { $mailer = self::_createMailer('mail', array()); } elseif ($mailingInfo['outBound_option'] == CRM_Mailing_Config::OUTBOUND_OPTION_MOCK) { $mailer = self::_createMailer('mock', array()); } elseif ($mailingInfo['outBound_option'] == CRM_Mailing_Config::OUTBOUND_OPTION_DISABLED) { CRM_Core_Error::debug_log_message(ts('Outbound mail has been disabled. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the OutBound Email.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1')))); CRM_Core_Session::setStatus(ts('Outbound mail has been disabled. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the OutBound Email.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1')))); } else { CRM_Core_Error::debug_log_message(ts('There is no valid SMTP server Setting Or SendMail path setting. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the OutBound Email.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1')))); CRM_Core_Session::setStatus(ts('There is no valid SMTP server Setting Or sendMail path setting. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the OutBound Email.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1')))); CRM_Core_Error::debug_var('mailing_info', $mailingInfo); } return $mailer; }
/** * retrieve a mailer to send any mail from the applciation * * @param * @access private * @return object */ static function &getMailer() { if (!isset(self::$_mail)) { require_once "CRM/Core/BAO/Preferences.php"; $mailingInfo =& CRM_Core_BAO_Preferences::mailingPreferences(); if (defined('CIVICRM_MAILER_SPOOL') && CIVICRM_MAILER_SPOOL) { require_once 'CRM/Mailing/BAO/Spool.php'; self::$_mail = new CRM_Mailing_BAO_Spool(); } elseif ($mailingInfo['outBound_option'] == 0) { if ($mailingInfo['smtpServer'] == '' || !$mailingInfo['smtpServer']) { CRM_Core_Error::fatal(ts('There is no valid smtp server setting. Click <a href=\'%1\'>Administer CiviCRM >> Global Settings</a> to set the SMTP Server.', array(1 => CRM_Utils_System::url('civicrm/admin/setting', 'reset=1')))); } $params['host'] = $mailingInfo['smtpServer'] ? $mailingInfo['smtpServer'] : 'localhost'; $params['port'] = $mailingInfo['smtpPort'] ? $mailingInfo['smtpPort'] : 25; if ($mailingInfo['smtpAuth']) { require_once 'CRM/Utils/Crypt.php'; $params['username'] = $mailingInfo['smtpUsername']; $params['password'] = CRM_Utils_Crypt::decrypt($mailingInfo['smtpPassword']); $params['auth'] = true; } else { $params['auth'] = false; } // set the localhost value, CRM-3153 $params['localhost'] = $_SERVER['SERVER_NAME']; self::$_mail =& Mail::factory('smtp', $params); } elseif ($mailingInfo['outBound_option'] == 1) { if ($mailingInfo['sendmail_path'] == '' || !$mailingInfo['sendmail_path']) { CRM_Core_Error::fatal(ts('There is no valid sendmail path setting. Click <a href=\'%1\'>Administer CiviCRM >> Global Settings</a> to set the Sendmail Server.', array(1 => CRM_Utils_System::url('civicrm/admin/setting', 'reset=1')))); } $params['sendmail_path'] = $mailingInfo['sendmail_path']; $params['sendmail_args'] = $mailingInfo['sendmail_args']; self::$_mail =& Mail::factory('sendmail', $params); } else { CRM_Core_Session::setStatus(ts('There is no valid SMTP server Setting Or SendMail path setting. Click <a href=\'%1\'>Administer CiviCRM >> Global Settings</a> to set the OutBound Email.', array(1 => CRM_Utils_System::url('civicrm/admin/setting', 'reset=1')))); } } return self::$_mail; }
/** * This function sets the default values for the form. * default values are retrieved from the database * * @access public * * @return None */ function setDefaultValues() { if (!$this->_defaults) { $this->_defaults = array(); $mailingBackend = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'mandrill_smtp_settings'); if (!empty($mailingBackend)) { $this->_defaults = $mailingBackend; if (!empty($this->_defaults['smtpPassword'])) { $this->_defaults['smtpPassword'] = CRM_Utils_Crypt::decrypt($this->_defaults['smtpPassword']); } } $mandrillSecret = CRM_Core_OptionGroup::values('mandrill_secret', TRUE); $this->_defaults['mandril_post_url'] = CRM_Utils_System::url('civicrm/ajax/mte/callback', "mandrillSecret={$mandrillSecret['Secret Code']}", TRUE, NULL, FALSE, TRUE); } return $this->_defaults; }
/** * Set default values for the form. */ public function setDefaultValues() { if (!$this->_defaults) { $this->_defaults = array(); $mailingBackend = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'mailing_backend'); if (!empty($mailingBackend)) { $this->_defaults = $mailingBackend; if (!empty($this->_defaults['smtpPassword'])) { $this->_defaults['smtpPassword'] = CRM_Utils_Crypt::decrypt($this->_defaults['smtpPassword']); } } else { if (!isset($this->_defaults['smtpServer'])) { $this->_defaults['smtpServer'] = 'localhost'; $this->_defaults['smtpPort'] = 25; $this->_defaults['smtpAuth'] = 0; } if (!isset($this->_defaults['sendmail_path'])) { $this->_defaults['sendmail_path'] = '/usr/sbin/sendmail'; $this->_defaults['sendmail_args'] = '-i'; } } } return $this->_defaults; }
/** * This function sets the default values for the form. * default values are retrieved from the database * * @access public * @return None */ function setDefaultValues() { if (!$this->_defaults) { $this->_defaults = array(); require_once "CRM/Core/DAO/Preferences.php"; $mailingDomain =& new CRM_Core_DAO_Preferences(); $mailingDomain->find(true); if ($mailingDomain->mailing_backend) { $this->_defaults = unserialize($mailingDomain->mailing_backend); if (!empty($this->_defaults['smtpPassword'])) { require_once 'CRM/Utils/Crypt.php'; $this->_defaults['smtpPassword'] = CRM_Utils_Crypt::decrypt($this->_defaults['smtpPassword']); } } else { if (!isset($this->_defaults['smtpServer'])) { $this->_defaults['smtpServer'] = 'localhost'; $this->_defaults['smtpPort'] = 25; $this->_defaults['smtpAuth'] = 0; } if (!isset($this->_defaults['sendmail_path'])) { $this->_defaults['sendmail_path'] = '/usr/sbin/sendmail'; $this->_defaults['sendmail_args'] = '-i'; } } } return $this->_defaults; }
/** * Implements hook_civicrm_alterMailer(). * * @param $mailer * @param $driver * @param $params */ function ams_civicrm_alterMailer(&$mailer, $driver, $params) { $session = CRM_Core_Session::singleton(); $ams = $session->get('ams', 'ams'); if ($ams) { $name = 'mailing_backend_alternate' . (int) $ams; $setting = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, $name); if ($setting['outBound_option'] == CRM_Mailing_Config::OUTBOUND_OPTION_SMTP) { $params['host'] = $setting['smtpServer'] ? $setting['smtpServer'] : 'localhost'; $params['port'] = $setting['smtpPort'] ? $setting['smtpPort'] : 25; $mailer->host = $params['host']; $mailer->port = $params['port']; if ($setting['smtpAuth']) { $params['username'] = $setting['smtpUsername']; $params['password'] = CRM_Utils_Crypt::decrypt($setting['smtpPassword']); $params['auth'] = TRUE; $mailer->username = $params['username']; $mailer->password = $params['password']; } else { $params['auth'] = FALSE; } $mailer->auth = $params['auth']; } } }
/** * Set default values for the form. */ public function setDefaultValues() { if (!$this->_defaults) { $this->_defaults = array(); $mailingBackend = Civi::settings()->get('mailing_backend'); if (!empty($mailingBackend)) { $this->_defaults = $mailingBackend; if (!empty($this->_defaults['smtpPassword'])) { $this->_defaults['smtpPassword'] = CRM_Utils_Crypt::decrypt($this->_defaults['smtpPassword']); } } else { if (!isset($this->_defaults['smtpServer'])) { $this->_defaults['smtpServer'] = 'localhost'; $this->_defaults['smtpPort'] = 25; $this->_defaults['smtpAuth'] = 0; } if (!isset($this->_defaults['sendmail_path'])) { $this->_defaults['sendmail_path'] = '/usr/sbin/sendmail'; $this->_defaults['sendmail_args'] = '-i'; } } } return $this->_defaults; }
function mte_getmailer(&$mailer, &$params = array()) { $mailingBackend = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'mandrill_smtp_settings'); if (CRM_Utils_array::value('is_active', $mailingBackend)) { $params['host'] = $mailingBackend['smtpServer']; $params['port'] = $mailingBackend['smtpPort']; $params['username'] = trim($mailingBackend['smtpUsername']); $params['password'] = CRM_Utils_Crypt::decrypt($mailingBackend['smtpPassword']); $params['auth'] = $mailingBackend['smtpAuth'] ? TRUE : FALSE; $mailer = Mail::factory('smtp', $params); CRM_Core_Smarty::singleton()->assign('alterMailer', 0); } }
/** * retrieve a mailer to send any mail from the applciation * * @param boolean $persist open a persistent smtp connection, should speed up mailings * * @access private * * @return object */ static function &getMailer($persist = FALSE) { if (!isset(self::$_mail)) { $mailingInfo = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'mailing_backend'); if (defined('CIVICRM_MAILER_SPOOL') && CIVICRM_MAILER_SPOOL) { self::$_mail = new CRM_Mailing_BAO_Spool(); } elseif ($mailingInfo['outBound_option'] == 0) { if ($mailingInfo['smtpServer'] == '' || !$mailingInfo['smtpServer']) { CRM_Core_Error::fatal(ts('There is no valid smtp server setting. Click <a href=\'%1\'>Administer CiviCRM >> Global Settings</a> to set the SMTP Server.', array(1 => CRM_Utils_System::url('civicrm/admin/setting', 'reset=1')))); } $params['host'] = $mailingInfo['smtpServer'] ? $mailingInfo['smtpServer'] : 'localhost'; $params['port'] = $mailingInfo['smtpPort'] ? $mailingInfo['smtpPort'] : 25; if ($mailingInfo['smtpAuth']) { $params['username'] = $mailingInfo['smtpUsername']; $params['password'] = CRM_Utils_Crypt::decrypt($mailingInfo['smtpPassword']); $params['auth'] = TRUE; } else { $params['auth'] = FALSE; } // set the localhost value, CRM-3153 $params['localhost'] = CRM_Utils_Array::value('SERVER_NAME', $_SERVER, 'localhost'); // also set the timeout value, lets set it to 30 seconds // CRM-7510 $params['timeout'] = 30; // CRM-9349 $params['persist'] = $persist; self::$_mail = Mail::factory('smtp', $params); } elseif ($mailingInfo['outBound_option'] == 1) { if ($mailingInfo['sendmail_path'] == '' || !$mailingInfo['sendmail_path']) { CRM_Core_Error::fatal(ts('There is no valid sendmail path setting. Click <a href=\'%1\'>Administer CiviCRM >> Global Settings</a> to set the Sendmail Server.', array(1 => CRM_Utils_System::url('civicrm/admin/setting', 'reset=1')))); } $params['sendmail_path'] = $mailingInfo['sendmail_path']; $params['sendmail_args'] = $mailingInfo['sendmail_args']; self::$_mail = Mail::factory('sendmail', $params); } elseif ($mailingInfo['outBound_option'] == 3) { $params = array(); self::$_mail = Mail::factory('mail', $params); } elseif ($mailingInfo['outBound_option'] == 4) { self::$_mail = Mail::factory('mock', $params); } else { CRM_Core_Session::setStatus(ts('There is no valid SMTP server Setting Or SendMail path setting. Click <a href=\'%1\'>Administer CiviCRM >> Global Settings</a> to set the OutBound Email.', array(1 => CRM_Utils_System::url('civicrm/admin/setting', 'reset=1')))); } } return self::$_mail; }