コード例 #1
0
ファイル: mailer.php プロジェクト: inscriptionweb/gutuma
 /**
  * Initializes this mailer based on the specified settings or the stored transport settings
  * @param bool $use_smtp TRUE if sender should use SMTP	 
  * @param string $smtp_server The SMTP server
  * @param int $smtp_port The SMTP port
  * @param string $smtp_encryption The SMTP encryption type
  * @param string $smtp_username The SMTP username
  * @param string $smtp_password The SMTP password
  * @param bool $use_sendmail TRUE if sender should fall back on sendmail if SMTP fails
  * @param bool $use_phpmail TRUE if sender should fall back on phpmail if SMTP/Sendmail fails	 
  * @return bool TRUE if operation was successful, else FALSE
  */
 public function init($use_smtp = NULL, $smtp_server = NULL, $smtp_port = NULL, $smtp_encryption = NULL, $smtp_username = NULL, $smtp_password = NULL, $use_sendmail = NULL, $use_phpmail = NULL)
 {
     $connections = array();
     $use_smtp = isset($use_smtp) ? $use_smtp : gu_config::get('use_smtp');
     $smtp_server = isset($smtp_server) ? $smtp_server : gu_config::get('smtp_server');
     $smtp_port = isset($smtp_port) ? (int) $smtp_port : (int) gu_config::get('smtp_port');
     $smtp_encryption = isset($smtp_encryption) ? $smtp_encryption : gu_config::get('smtp_encryption');
     $smtp_username = isset($smtp_username) ? $smtp_username : gu_config::get('smtp_username');
     $smtp_password = isset($smtp_password) ? $smtp_password : gu_config::get('smtp_password');
     $use_sendmail = isset($use_sendmail) ? $use_sendmail : gu_config::get('use_sendmail');
     $use_phpmail = isset($use_phpmail) ? $use_phpmail : gu_config::get('use_phpmail');
     if (!($use_smtp || $use_sendmail || $use_phpmail)) {
         return gu_error(t('No method of mail transportation has been configured'));
     }
     // Add the SMTP connection if details have been given
     if ($use_smtp) {
         switch ($smtp_encryption) {
             case 'SSL':
                 $enc = Swift_Connection_SMTP::ENC_SSL;
             case 'TLS':
                 $enc = Swift_Connection_SMTP::ENC_TLS;
             default:
                 $enc = Swift_Connection_SMTP::ENC_OFF;
         }
         $server = $smtp_server != '' ? $smtp_server : Swift_Connection_SMTP::AUTO_DETECT;
         $port = $smtp_port > 0 ? $smtp_port : Swift_Connection_SMTP::AUTO_DETECT;
         $smtp = new Swift_Connection_SMTP($server, $port, $enc);
         if ($smtp_username != '' && $smtp_password != '') {
             $smtp->setUsername($smtp_username);
             $smtp->setPassword($smtp_password);
         }
         $connections[] =& $smtp;
         gu_debug(t('Created SMTP connection (%:% Enc:% User:% Pass:%)', array($smtp->getServer(), $smtp->getPort(), $smtp_encryption, $smtp->getUsername(), str_mask($smtp->getPassword()))));
     }
     // Add the SendMail connection option
     if ($use_sendmail) {
         $connections[] = new Swift_Connection_Sendmail(Swift_Connection_Sendmail::AUTO_DETECT);
     }
     // Fall back on mail() if all else fails
     if ($use_phpmail) {
         $connections[] = new Swift_Connection_NativeMail();
     }
     // And instantiate swift with these connections
     try {
         $this->swift = new Swift(new Swift_Connection_Multi($connections));
     } catch (Swift_ConnectionException $e) {
         gu_debug($e->getMessage());
         return gu_error(t("Unable to initialize mailer. Check transport settings."));
     }
     // Enable level 3 logging
     $log =& Swift_LogContainer::getLog();
     $log->setLogLevel(3);
     return TRUE;
 }