示例#1
0
	/**
	 * @group	framework.mail
	 * @dataProvider	getCleanTextData
	 */
	public function testCleanText( $input, $expected )
	{
		$this->assertThat(
			JMailHelper::cleanText( $input ),
			$this->equalTo( $expected )
		);
	}
示例#2
0
	/**
	 * 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 );
	}
示例#3
0
 public function sendContactForm()
 {
     jimport('joomla.mail.helper');
     $app = JFactory::getApplication();
     // Get a JMail instance
     $mailer = JFactory::getMailer();
     $params = $app->getParams();
     $defaultFrom = $mailer->From;
     $defaultFromname = $mailer->FromName;
     $data = array('name' => JMailHelper::cleanLine($this->getState('contact.name')), 'email' => JMailHelper::cleanAddress($this->getState('contact.email')), 'telephone' => JMailHelper::cleanLine($this->getState('contact.telephone')), 'subject' => JMailHelper::cleanSubject($this->getState('contact.subject')) . ' [' . $defaultFromname . ']', 'message' => JMailHelper::cleanText($this->getState('contact.message')), 'propertyURL' => $this->getState('contact.propertyURL'));
     $dispatcher = JDispatcher::getInstance();
     JPluginHelper::importPlugin('jea');
     if ($params->get('use_captcha')) {
         $plugin = JFactory::getConfig()->get('captcha');
         if ($plugin == '0') {
             $plugin = 'recaptcha';
         }
         $captcha = JCaptcha::getInstance($plugin);
         // Test the value.
         if (!$captcha->checkAnswer('')) {
             $error = $captcha->getError();
             if ($error instanceof Exception) {
                 $this->setError($error->getMessage());
             } else {
                 $this->setError($error);
             }
         }
     }
     // Check data
     if (empty($data['name'])) {
         $this->setError(JText::_('COM_JEA_YOU_MUST_TO_ENTER_YOUR_NAME'));
     }
     if (empty($data['message'])) {
         $this->setError(JText::_('COM_JEA_YOU_MUST_TO_ENTER_A_MESSAGE'));
     }
     if (!JMailHelper::isEmailAddress($data['email'])) {
         $this->setError(JText::sprintf('COM_JEA_INVALID_EMAIL_ADDRESS', $data['email']));
     }
     if ($this->getErrors()) {
         return false;
     }
     $result = $dispatcher->trigger('onBeforeSendContactForm', array($data));
     if (in_array(false, $result, true)) {
         return false;
     }
     $recipients = array();
     $defaultMail = $params->get('default_mail');
     $agentMail = '';
     if ($params->get('send_form_to_agent') == 1) {
         $item = $this->getItem();
         $db = $this->getDbo();
         $q = 'SELECT `email` FROM `#__users` WHERE `id`=' . (int) $item->created_by;
         $db->setQuery($q);
         $agentMail = $db->loadResult();
     }
     if (!empty($defaultMail) && !empty($agentMail)) {
         $recipients[] = $defaultMail;
         $recipients[] = $agentMail;
     } elseif (!empty($defaultMail)) {
         $recipients[] = $defaultMail;
     } elseif (!empty($agentMail)) {
         $recipients[] = $agentMail;
     } else {
         // Send to the webmaster email
         $recipients[] = $defaultFrom;
     }
     $body = $data['message'] . "\n";
     if (!empty($data['telephone'])) {
         $body .= "\n" . JText::_('COM_JEA_TELEPHONE') . ' : ' . $data['telephone'];
     }
     $body .= "\n" . JText::_('COM_JEA_PROPERTY_URL') . ' : ' . $data['propertyURL'];
     $mailer->setBody($body);
     $ret = $mailer->sendMail($data['email'], $data['name'], $recipients, $data['subject'], $body, false);
     if ($ret == true) {
         $app->setUserState('contact.name', '');
         $app->setUserState('contact.email', '');
         $app->setUserState('contact.telephone', '');
         $app->setUserState('contact.subject', '');
         $app->setUserState('contact.message', '');
         return true;
     }
     return false;
 }
示例#4
0
 /**
  * Function to send an email
  *
  * @param   string   $from         From email address
  * @param   string   $fromName     From name
  * @param   mixed    $recipient    Recipient email address(es)
  * @param   string   $subject      email subject
  * @param   string   $body         Message body
  * @param   boolean  $mode         false = plain text, true = HTML
  * @param   mixed    $cc           CC email address(es)
  * @param   mixed    $bcc          BCC email address(es)
  * @param   mixed    $attachment   Attachment file name(s)
  * @param   mixed    $replyTo      Reply to email address(es)
  * @param   mixed    $replyToName  Reply to name(s)
  *
  * @return  boolean  True on success
  *
  * @since   11.1
  */
 public static function sendMail($from, $fromName, $recipient, $subject, $body, $mode = false, $cc = null, $bcc = null, $attachment = null, $replyTo = null, $replyToName = null)
 {
     // do a couple of tweaks to improve spam scores
     // If html, make sure there's an <html> tag
     if ($mode) {
         if (!stristr($body, '<html>')) {
             $body = '<html>' . $body . '</html>';
         }
     }
     // if simple single email recipient with no name part, fake out name part to avoid TO_NO_BKRT hit in spam filters
     $recipientName = '';
     if (is_string($recipient) && !strstr($recipient, '<')) {
         $recipientName = $recipient;
     }
     // Get a JMail instance
     $mailer = JFactory::getMailer();
     $mailer->setSubject($subject);
     $mailer->setBody($body);
     $mailer->Encoding = 'base64';
     // Are we sending the email as HTML?
     $mailer->isHtml($mode);
     try {
         $mailer->addRecipient($recipient, $recipientName);
     } catch (Exception $e) {
         return false;
     }
     try {
         $mailer->addCc($cc);
     } catch (Exception $e) {
         // not sure if we should bail if Cc is bad, for now just soldier on
     }
     try {
         $mailer->addBcc($bcc);
     } catch (Exception $e) {
         // not sure if we should bail if Bcc is bad, for now just soldier on
     }
     try {
         $mailer->addAttachment($attachment);
     } catch (Exception $e) {
         // most likely file didn't exist, ignore
     }
     $autoReplyTo = false;
     // Take care of reply email addresses
     if (is_array($replyTo)) {
         $numReplyTo = count($replyTo);
         for ($i = 0; $i < $numReplyTo; $i++) {
             try {
                 $mailer->addReplyTo($replyTo[$i], $replyToName[$i]);
             } catch (Exception $e) {
                 // carry on
             }
         }
     } elseif (isset($replyTo)) {
         try {
             $mailer->addReplyTo($replyTo, $replyToName);
         } catch (Exception $e) {
             // carry on
         }
     } else {
         $autoReplyTo = true;
     }
     try {
         $mailer->setSender(array($from, $fromName, $autoReplyTo));
     } catch (Exception $e) {
         return false;
     }
     /**
      * Set the plain text AltBody, which forces the PHP mailer class to make this
      * a multipart MIME type, with an alt body for plain text.  If we don't do this,
      * the default behavior is to send it as just text/html, which causes spam filters
      * to downgrade it.
      */
     if ($mode) {
         $mailer->AltBody = JMailHelper::cleanText(strip_tags($body));
     }
     try {
         $ret = $mailer->Send();
     } catch (Exception $e) {
         return false;
     }
     return $ret;
 }
示例#5
0
文件: helper.php 项目: adjaika/J3Base
 /**
  * Helper wrapper method for cleanText
  *
  * @param   string  $value  Multi-line string to be cleaned.
  *
  * @return  string  Cleaned multi-line string.
  *
  * @see     JMailHelper::cleanText()
  * @since   3.4
  */
 public function cleanText($value)
 {
     return JMailHelper::cleanText($value);
 }
示例#6
0
文件: sender.php 项目: Rikisha/proj
 /**
  * The main method for letter sending.
  *
  * @param array $params - the configuration of letter
  *
  * @return boolean
  * @since  1.0
  */
 public function send($params = null)
 {
     if ($params) {
         $this->_setData($params);
     }
     $this->ClearAddresses();
     $this->AddReplyTo(JMailHelper::cleanAddress($this->toEmail), JMailHelper::cleanText($this->toName));
     $this->SetFrom(JMailHelper::cleanAddress($this->fromEmail), JMailHelper::cleanText($this->fromName));
     $this->Subject = JMailHelper::cleanText($this->letter->subject);
     if (!empty($this->letter->encoding)) {
         $this->CharSet = $this->letter->encoding;
     }
     $this->Body = JMailHelper::cleanText($this->letter->content);
     foreach ($this->attach as $item) {
         $parts = explode(DS, $item->filename);
         $full = JPATH_ROOT . DS . $item->filename;
         if (function_exists('mime_content_type')) {
             $mime = mime_content_type($full);
         } elseif (function_exists('finfo_open')) {
             $finfo = finfo_open(FILEINFO_MIME);
             $mime = finfo_file($finfo, $full);
             finfo_close($finfo);
             list($mime) = explode(';', $mime);
         } else {
             $mime = 'application/octet-stream';
         }
         parent::AddAttachment($full, '', 'base64', $mime);
     }
     parent::IsHTML($params['type'] == 'html');
     foreach ($this->emails as $email) {
         if (!empty($email->email)) {
             parent::addAddress($email->email, !empty($email->name) ? $email->name : "");
         }
     }
     try {
         if (!parent::Send()) {
             throw new Exception();
         }
     } catch (Exception $e) {
         $msg = $e->getMessage();
         if (!empty($msg)) {
             $this->setError($msg);
         }
         LogHelper::addDebug('Mailer.Sender error.', LogHelper::CAT_MAILER, $this->getErrors());
         return false;
     }
     return true;
 }
示例#7
0
	/**
	 * Set the E-Mail body
	 *
	 * @access public
	 * @param string $content Body of the e-mail
	 * @return void
	 * @since 1.5
	 */
	public function setBody($content) {
		/*
		 * Filter the Body
		 * TODO: Check for XSS
		 */
		$this->Body = JMailHelper::cleanText($content);
		
		if (FMSTS_JVERSION == '16') {
			return $this;
		}
	}