Receiving form values on mail
To send an email, Drupal 8 is not different from Drupal 7: You also need to implement hook_mail() as described in MailManager::mail(). 

See also the code used from MailManager::doMail(), which is the method that effectively composes and sends the email.
First, it initializes the $message variable.

  // Bundle up the variables into a structured array for altering.
  $message = array(
    'id' =&gt; $module . '_' . $key,
    'module' =&gt; $module,
    'key' =&gt; $key,
    'to' =&gt; $to,
    'from' =&gt; $site_mail,
    'reply-to' =&gt; $reply,
    'langcode' =&gt; $langcode,
    'params' =&gt; $params,
    'send' =&gt; TRUE,
    'subject' =&gt; '',
    'body' =&gt; array(),
  );


It passes that variable to the implementation of hook_mail() done from the module that is sending the email.

  // Build the email (get subject and body, allow additional headers) by
  // invoking hook_mail() on this module. We cannot use
  // moduleHandler()-&gt;invoke() as we need to have $message by reference in
  // hook_mail().
  if (function_exists($function = $module . '_mail')) {
    $function($key, $message, $params);
  }


Then, it sends the email.

  // Optionally send email.
  if ($send) {
    // The original caller requested sending. Sending was canceled by one or
    // more hook_mail_alter() implementations. We set 'result' to NULL,
    // because FALSE indicates an error in sending.
    if (empty($message['send'])) {
      $message['result'] = NULL;
    }
    // Sending was originally requested and was not canceled.
    else {
      // Ensure that subject is plain text. By default translated and
      // formatted strings are prepared for the HTML context and email
      // subjects are plain strings.
      if ($message['subject']) {
        $message['subject'] = PlainTextOutput::renderFromHtml($message['subject']);
      }
      $message['result'] = $system-&gt;mail($message);
      // Log errors.
      if (!$message['result']) {
        $this-&gt;loggerFactory-&gt;get('mail')
          -&gt;error('Error sending email (from %from to %to with reply-to %reply).', array(
            '%from' =&gt; $message['from'],
            '%to' =&gt; $message['to'],
            '%reply' =&gt; $message['reply-to'] ? $message['reply-to'] : $this-&gt;t('not set'),
          ));
        drupal_set_message($this-&gt;t('Unable to send email. Contact the site administrator if the problem persists.'), 'error');
      }
    }


As you see, the email is sent using $message, not $parameters. If you don't implement hook_mail(), $message['body'] will be an empty array, and $message['subject'] will be an empty string.
That is why you get empty emails.