public function createMimeMessage()
    {
        $this->createBody();

        $envelopeAllowedType = array(
            'remail', 'return_path', 'date', 'from', 'reply_to', 'in_reply_to',
            'subject', 'to', 'cc', 'bcc', 'message_id', 'custom_headers',
        );
        /* @var $envelope array */
        $envelope = Helper::preparingProperties($this->envelope, $envelopeAllowedType, Helper::OUT_ARRAY);
        $bodyAllowedType = array(
            'type', 'encoding', 'charset', 'type.parameters', 'subtype',
            'id', 'description', 'disposition.type', 'disposition', 'contents.data',
            'lines', 'bytes', 'md5',
        );
        /* @var $body array */
        foreach ($this->body as $key => $part) {
            $this->body[$key] = Helper::preparingProperties($part, $bodyAllowedType, Helper::OUT_ARRAY);
        }
        $body = $this->body;

        return imap_mail_compose($envelope, $body);
    }