public function Send ($from, $subject = FALSE, $headers = FALSE)
    {

        // If the sender is not in the name <email> format

        if (preg_match ('/(.*?)<(.*?)>/', $from, $fromArray))
        {

            // Set the name and address

            $this->_fromName	= trim ($fromArray[1]);
            $this->_fromAddress	= $fromArray[2];

            // Validate the name and email

            try
            {

                Parser::_Validate ('From name', array (
                    'type'		=> \Sonic\Model::TYPE_STRING,
                    'charset'	=> 'alpha',
                    'min'		=> 1,
                    'max'		=> 255
                ), $this->_fromName);

                Parser::_validateEmail ($this->_fromAddress);

            }
            catch (Parser\Exception $e)
            {

                // Add error and return FALSE

                new \Sonic\Message ('error', $e->getMessage ());
                return FALSE;

            }

        }
        else
        {

            // Add error and return FALSE

            new \Sonic\Message ('error', 'Invalid from format, must be Name<user@domain.com>: ' . $from);
            return FALSE;

        }

        // If a subject has been passed set it

        if ($subject !== FALSE)
        {
            $this->setSubject ($subject);
        }

        // If here is no subject

        if (!$this->_subject)
        {

            // Add error and return FALSE

            new \Sonic\Message ('error', 'No message subject!');
            return FALSE;

        }

        // Build message

        if (!$this->Build ())
        {

            // Add error and return FALSE

            new \Sonic\Message ('error', 'Cannot build the message!');
            return FALSE;

        }

        // Add additional headers

        if ($headers !== FALSE)
        {
            $this->addHeader ($headers);
        }

        // Add subject header

        if ($this->_subject)
        {
            $this->addHeader ('Subject: ' . $this->_subject, TRUE);
        }

        // Add from header

        $this->addHeader ('From: ' . $this->_fromName . '<' . $this->_fromAddress . '>', TRUE);

        // Add date header

        $this->addHeader ('Date: ' . date ('r'), TRUE);

        // Send using correct method

        if ($this->_useStream)
        {

            // SMTP Stream

            return $this->sendUsingStream ();

        }
        else
        {

            // PHP Mail

            return $this->sendUsingPHP ();

        }

    }