Strings always evaluate to boolean true unless they have a value that’s considered “empty” by PHP (taken from the documentation for empty):
""(an empty string);"0"(0 as a string)
If you need to set a boolean based on the text value of a string, then you’ll need to check for the presence or otherwise of that value.
$test_mode_mail = $string === 'true'? true: false;
EDIT: the above code is intended for clarity of understanding. In actual use the following code may be more appropriate:
$test_mode_mail = ($string === 'true');
or maybe use of the filter_var function may cover more boolean values:
filter_var($string, FILTER_VALIDATE_BOOLEAN);
filter_var covers a whole range of values, including the truthy values "true", "1", "yes" and "on". See here for more details.