How can I set the email sender name?
If you look at your code and the output you wrote, it come clearly out, that either:


$message['headers']['From'] = $site_name . ' &lt;' . $site_mail . '>';
$message['from'] = $site_name . ' &lt;' . $site_mail . '>';


is not working at all. 

I would get rid of the unnecessary code first, and then trying to modify the working line.