Exemple #1
0
 /**
  * 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;
 }
Exemple #2
0
 /**
  * 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;
 }
Exemple #4
0
 /**
  * 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;
 }
Exemple #5
0
 /**
  * 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;
 }
Exemple #6
0
/**
 * 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'];
        }
    }
}
Exemple #7
0
 /**
  * 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;
 }