public function addAttachment ($filePath = FALSE, $fileName = NULL, $fileData = FALSE, $mimeType = 'text/plain')
    {

        // If its an existing file

        if ($filePath !== FALSE)
        {

            // Check File Exists

            if (!file_exists ($filePath))
            {

                // Add error and return false

                new \Sonic\Message ('error', $filePath . ' doesnt exist!');
                return FALSE;

            }

            // Get MIME Type

            $objFinfo   = new finfo;

            if (!$mimeType = $objFinfo->file ($filePath, FILEINFO_MIME))
            {

                // Add error and return false

                new \Sonic\Message ('error', 'Cannot get MIME type!');
                return FALSE;

            }

            // Get File Data

            if (!$fileData = @file_get_contents ($filePath))
            {

                // Add error and return false

                new \Sonic\Message ('error', 'Cannot get attachment data!');
                return FALSE;

            }

        }
        else if (!$fileData || !$fileName)
        {

            // Add error and return false

            new \Sonic\Message ('error', 'Invalid Attachment!');
            return FALSE;

        }

        // Set attachments boolean

        $this->_attachmentsSet	= TRUE;

        // Add Attachment

        $this->_attachments[]	= array (
            'name'		=> $fileName,
            'data'		=> $fileData,
            'type'		=> $mimeType
        );

        // Return TRUE

        return TRUE;

    }