This feels dirty, I think it probably makes more sense and would be less confusing to do a check to see if the result of the normalize_params call is not an array and turn it into one by default.  Then we could loop through it and create a new email for each message. 

For example:

    messages = normalized_params
    messages = [messages] unless messages.kind_of?(Array)
    messages.each do |message|
      Griddler::Email.new(message).process
    end