How to print the value of an array instead of the key?
The form submission process will only actually keep hold of the array key (which is the value for the select element), so it won't be available to you in $params.

The usual method to handle this sort of thing is to provide a function to return the options:

function MYMODULE_colour_options() {
  return array(
    0 =&gt; t('Blue'),
    1 =&gt; t('Yellow'),
  );
}


Then in your form function you would use:

$form['color'] = array(
  '#type' =&gt; 'select',
  '#required' =&gt; TRUE,
  '#title' =&gt; t('Color:'),
  '#options' =&gt; MYMODULE_colour_options()
);


And in the message hook:

$colour_options = MYMODULE_colour_options();

$colour_string = 'Unknown';
if (isset($colour_options[$params['color']])) {
  $colour_string = $colour_options[$params['color']];
}

$message['subject'] = 'Selected color is: ' . $colour_string;