hook_mail dosen't work?
hook_mail is supposed to take message by reference. The way you do it, you are modifying a local copy, and your modifications cannot ever leave the function's body. It should look like this:

function MYMODULE_mail($key, &amp;$message, $params){
    switch ($key){
        case 'some_mail_key': 
            $message['subject'] = 'test subject';
            $message['body'] = 'test body message';
            break;
    }
}


This little ampersand is what makes all the difference. You cannot omit them. If API defined hook with reference argument, keep it a reference argument, or expect problems.