?
Path : /home/admin/domains/happytokorea.com/public_html_bk/board/libraries/joomla/mail/ |
Current File : /home/admin/domains/happytokorea.com/public_html_bk/board/libraries/joomla/mail/mail.php |
<?php /** * @version $Id: mail.php 14401 2010-01-26 14:10:00Z louis $ * @package Joomla.Framework * @subpackage Mail * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved. * @license GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See COPYRIGHT.php for copyright notices and details. */ // Check to ensure this file is within the rest of the framework defined('JPATH_BASE') or die(); jimport('phpmailer.phpmailer'); jimport('joomla.mail.helper'); /** * E-Mail Class. Provides a common interface to send e-mail from the Joomla! Framework * * @package Joomla.Framework * @subpackage Mail * @since 1.5 */ class JMail extends PHPMailer { /** * Constructor * */ function JMail() { // phpmailer has an issue using the relative path for it's language files $this->SetLanguage('joomla', JPATH_LIBRARIES.DS.'phpmailer'.DS.'language'.DS); } /** * Returns a reference to a global e-mail object, only creating it * if it doesn't already exist. * * This method must be invoked as: * <pre> $mail =& JMail::getInstance();</pre> * * NOTE: If you need an instance to use that does not have the global configuration * values, use an id string that is not 'Joomla'. * * @static * @access public * @param string $id The id string for the JMail instance [optional] * @return object The global JMail object * @since 1.5 */ function & getInstance($id = 'Joomla') { static $instances; if (!isset ($instances)) { $instances = array (); } if (empty ($instances[$id])) { $instances[$id] = new JMail(); } return $instances[$id]; } /** * @return mixed True if successful, a JError object otherwise */ function &Send() { if ( ( $this->Mailer == 'mail' ) && ! function_exists('mail') ) { return JError::raiseNotice( 500, JText::_('MAIL_FUNCTION_DISABLED') ); } @ $result = parent::Send(); if ($result == false) { // TODO: Set an appropriate error number $result =& JError::raiseNotice( 500, JText::_($this->ErrorInfo) ); } return $result; } /** * Set the E-Mail sender * * @access public * @param array $from E-Mail address and Name of sender * <pre> * array( [0] => E-Mail Address [1] => Name ) * </pre> * @return void * @since 1.5 */ function setSender($from) { // If $from is an array we assume it has an address and a name if (is_array($from)) { $this->From = JMailHelper::cleanLine( $from[0] ); $this->FromName = JMailHelper::cleanLine( $from[1] ); // If it is a string we assume it is just the address } elseif (is_string($from)) { $this->From = JMailHelper::cleanLine( $from ); // If it is neither, we throw a warning } else { JError::raiseWarning( 0, "JMail:: Invalid E-Mail Sender: $from", "JMail::setSender($from)"); } } /** * Set the E-Mail subject * * @access public * @param string $subject Subject of the e-mail * @return void * @since 1.5 */ function setSubject($subject) { $this->Subject = JMailHelper::cleanLine( $subject ); } /** * Set the E-Mail body * * @access public * @param string $content Body of the e-mail * @return void * @since 1.5 */ function setBody($content) { /* * Filter the Body * TODO: Check for XSS */ $this->Body = JMailHelper::cleanText( $content ); } /** * Add recipients to the email * * @access public * @param mixed $recipient Either a string or array of strings [e-mail address(es)] * @return void * @since 1.5 */ function addRecipient($recipient) { // If the recipient is an aray, add each recipient... otherwise just add the one if (is_array($recipient)) { foreach ($recipient as $to) { $to = JMailHelper::cleanLine( $to ); $this->AddAddress($to); } } else { $recipient = JMailHelper::cleanLine( $recipient ); $this->AddAddress($recipient); } } /** * Add carbon copy recipients to the email * * @access public * @param mixed $cc Either a string or array of strings [e-mail address(es)] * @return void * @since 1.5 */ function addCC($cc) { //If the carbon copy recipient is an aray, add each recipient... otherwise just add the one if (isset ($cc)) { if (is_array($cc)) { foreach ($cc as $to) { $to = JMailHelper::cleanLine( $to ); parent::AddCC($to); } } else { $cc = JMailHelper::cleanLine( $cc ); parent::AddCC($cc); } } } /** * Add blind carbon copy recipients to the email * * @access public * @param mixed $cc Either a string or array of strings [e-mail address(es)] * @return void * @since 1.5 */ function addBCC($bcc) { // If the blind carbon copy recipient is an aray, add each recipient... otherwise just add the one if (isset ($bcc)) { if (is_array($bcc)) { foreach ($bcc as $to) { $to = JMailHelper::cleanLine( $to ); parent::AddBCC($to); } } else { $bcc = JMailHelper::cleanLine( $bcc ); parent::AddBCC($bcc); } } } /** * Add file attachments to the email * * @access public * @param mixed $attachment Either a string or array of strings [filenames] * @return void * @since 1.5 */ function addAttachment($attachment) { // If the file attachments is an aray, add each file... otherwise just add the one if (isset ($attachment)) { if (is_array($attachment)) { foreach ($attachment as $file) { parent::AddAttachment($file); } } else { parent::AddAttachment($attachment); } } } /** * Add Reply to e-mail address(es) to the e-mail * * @access public * @param array $reply Either an array or multi-array of form * <pre> * array( [0] => E-Mail Address [1] => Name ) * </pre> * @return void * @since 1.5 */ function addReplyTo($replyto) { // Take care of reply email addresses if (is_array($replyto[0])) { foreach ($replyto as $to) { $to0 = JMailHelper::cleanLine( $to[0] ); $to1 = JMailHelper::cleanLine( $to[1] ); parent::AddReplyTo($to0, $to1); } } else { $replyto0 = JMailHelper::cleanLine( $replyto[0] ); $replyto1 = JMailHelper::cleanLine( $replyto[1] ); parent::AddReplyTo($replyto0, $replyto1); } } /** * Use sendmail for sending the e-mail * * @access public * @param string $sendmail Path to sendmail [optional] * @return boolean True on success * @since 1.5 */ function useSendmail($sendmail = null) { $this->Sendmail = $sendmail; if (!empty ($this->Sendmail)) { $this->IsSendmail(); return true; } else { $this->IsMail(); return false; } } /** * Use SMTP for sending the e-mail * * @access public * @param string $auth SMTP Authentication [optional] * @param string $host SMTP Host [optional] * @param string $user SMTP Username [optional] * @param string $pass SMTP Password [optional] * @param string $secure SMTP Secure ssl,tls [optinal] * @param string $port SMTP Port [optional] * @return boolean True on success * @since 1.5 */ function useSMTP($auth = null, $host = null, $user = null, $pass = null,$secure = null, $port = 25) { $this->SMTPAuth = $auth; $this->Host = $host; $this->Username = $user; $this->Password = $pass; $this->Port = $port; if ($secure == 'ssl' || $secure == 'tls') { $this->SMTPSecure = $secure; } if ($this->SMTPAuth !== null && $this->Host !== null && $this->Username !== null && $this->Password !== null) { $this->IsSMTP(); } } }