# Single block: delegate
            if (count($this->data) == 1) {
                $block = clone $this->data[0];
                $block->headers = $this->headers + $block->headers;
                # merge the headers
                return $block->render();
            }
        }
        # Render the block
        return array($this->_render_headers(), $this->_render_body());
    }
    function __toString()
    {
        list($headers, $body) = $this->render();
        return $headers . $this->message->CRLF . $this->message->CRLF . $body;
    }
    /** Encode a string using the ugly encoding
     * @param string $str
     * @return string
     */
    static function _encodeStr($str)
    {
        return sprintf('=?%s?B?%s?=', 'UTF-8', base64_encode($str));
    }
}
if (0 && 'unittest') {
    $M = new MailMessage();
    $M->setDefaultHeaders()->setFrom('from@{from_domain}', 'From Name')->setTo('to@to_domain', 'To Name')->setSubject('LOL, {user}')->setMessage("Hi, <b>{user}</b>!\n\nlol", 'html')->setMessage("Hi, {user}!\n\nlol", 'text')->attachment('file_{user}.pdf', "BINARY\nCONTENT")->attachment('file_{user}.pdf', "BINARY\nCONTENT");
    $M->placeholders = array('{from_domain}' => 'gmail.com', '{user}' => 'Kevin Mitnick');
    echo $M;
}