diff --git a/config/install/yamlform.yamlform.contact.yml b/config/install/yamlform.yamlform.contact.yml
index 727ac81..7ba79d5 100644
--- a/config/install/yamlform.yamlform.contact.yml
+++ b/config/install/yamlform.yamlform.contact.yml
@@ -96,6 +96,8 @@ handlers:
     weight: 1
     settings:
       to_mail: '[yamlform-submission:values:email:value]'
+      cc_mail: ''
+      bcc_mail: ''
       from_mail: default
       from_name: default
       subject: '[yamlform-submission:values:subject:value]'
@@ -112,6 +114,8 @@ handlers:
     weight: 1
     settings:
       to_mail: default
+      cc_mail: ''
+      bcc_mail: ''
       from_mail: '[yamlform-submission:values:email:value]'
       from_name: '[yamlform-submission:values:name:value]'
       subject: '[yamlform-submission:values:subject:value]'
diff --git a/config/schema/yamlform.schema.yml b/config/schema/yamlform.schema.yml
index 11b08da..d450303 100644
--- a/config/schema/yamlform.schema.yml
+++ b/config/schema/yamlform.schema.yml
@@ -449,6 +449,12 @@ yamlform.handler.email:
     to_mail:
       label: 'Email to address'
       type: email
+    bcc_mail:
+      label: 'Email Bcc address'
+      type: email
+    cc_mail:
+      label: 'Email Cc address'
+      type: email
     from_mail:
       label: 'Email from address'
       type: email
diff --git a/modules/yamlform_examples/config/install/yamlform.yamlform.example_elements_extras.yml b/modules/yamlform_examples/config/install/yamlform.yamlform.example_elements_extras.yml
index d58ab3e..f074738 100644
--- a/modules/yamlform_examples/config/install/yamlform.yamlform.example_elements_extras.yml
+++ b/modules/yamlform_examples/config/install/yamlform.yamlform.example_elements_extras.yml
@@ -53,6 +53,13 @@ elements: |
       '#type': codemirror
       '#mode': html
       '#title': 'HTML'
+  email_multiple:
+    '#type': details
+    '#title': 'Email multiple (email_multiple)'
+    '#open': true
+    email_multiple_basic:
+      '#type': email_multiple
+      '#title': 'Multiple email addresses'
   email_confirm:
     '#type': details
     '#title': 'Email confirmation (email_confirm)'
diff --git a/modules/yamlform_templates/config/install/yamlform.yamlform.template_job_application.yml b/modules/yamlform_templates/config/install/yamlform.yamlform.template_job_application.yml
index 95d3d2d..d9880c2 100644
--- a/modules/yamlform_templates/config/install/yamlform.yamlform.template_job_application.yml
+++ b/modules/yamlform_templates/config/install/yamlform.yamlform.template_job_application.yml
@@ -153,6 +153,8 @@ handlers:
     weight: 1
     settings:
       to_mail: default
+      cc_mail: ''
+      bcc_mail: ''
       from_mail: '[yamlform-submission:values:email:value]'
       from_name: '[yamlform-submission:values:first_name] [yamlform-submission:values:last_name]'
       subject: default
diff --git a/modules/yamlform_templates/config/install/yamlform.yamlform.template_registration.yml b/modules/yamlform_templates/config/install/yamlform.yamlform.template_registration.yml
index da76153..83042b7 100644
--- a/modules/yamlform_templates/config/install/yamlform.yamlform.template_registration.yml
+++ b/modules/yamlform_templates/config/install/yamlform.yamlform.template_registration.yml
@@ -143,6 +143,8 @@ handlers:
     weight: 1
     settings:
       to_mail: default
+      cc_mail: ''
+      bcc_mail: ''
       from_mail: '[yamlform-submission:values:email:value]'
       from_name: '[yamlform-submission:values:first_name] [yamlform-submission:values:last_name]'
       subject: default
diff --git a/modules/yamlform_templates/config/install/yamlform.yamlform.template_subscribe.yml b/modules/yamlform_templates/config/install/yamlform.yamlform.template_subscribe.yml
index b63b7c9..df65f56 100644
--- a/modules/yamlform_templates/config/install/yamlform.yamlform.template_subscribe.yml
+++ b/modules/yamlform_templates/config/install/yamlform.yamlform.template_subscribe.yml
@@ -88,6 +88,8 @@ handlers:
     weight: 1
     settings:
       to_mail: default
+      cc_mail: ''
+      bcc_mail: ''
       from_mail: '[yamlform-submission:values:email:value]'
       from_name: '[yamlform-submission:values:first_name] [yamlform-submission:values:last_name]'
       subject: default
diff --git a/src/Element/YamlFormEmailMultiple.php b/src/Element/YamlFormEmailMultiple.php
new file mode 100755
index 0000000..58b9edf
--- /dev/null
+++ b/src/Element/YamlFormEmailMultiple.php
@@ -0,0 +1,88 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Render\Element\YamlFormEmailMultiple.
+ */
+
+namespace Drupal\yamlform\Element;
+
+use Drupal\Core\Render\Element;
+use Drupal\Core\Render\Element\FormElement;
+use Drupal\Core\Form\FormStateInterface;
+
+/**
+ * Provides a form element for entering multiple comma delimited email addresses.
+ *
+ * @FormElement("yamlform_email_multiple")
+ */
+class YamlFormEmailMultiple extends FormElement {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getInfo() {
+    $class = get_class($this);
+    return [
+      '#input' => TRUE,
+      '#description' => $this->t('Multiple email addresses may be separated by commas.'),
+      '#size' => 60,
+      '#allow_tokens' => FALSE,
+      '#process' => [
+        [$class, 'processAutocomplete'],
+        [$class, 'processAjaxForm'],
+        [$class, 'processPattern'],
+      ],
+      '#element_validate' => [
+        [$class, 'validateYamlFormEmailMultiple'],
+      ],
+      '#pre_render' => [
+        [$class, 'preRenderYamlFormEmailMultiple'],
+      ],
+      '#theme' => 'input__email_multiple',
+      '#theme_wrappers' => ['form_element'],
+    ];
+  }
+
+  /**
+   * Form element validation handler for #type 'email_multiple'.
+   */
+  public static function validateYamlFormEmailMultiple(&$element, FormStateInterface $form_state, &$complete_form) {
+    $value = trim($element['#value']);
+    $form_state->setValueForElement($element, $value);
+
+    if ($value) {
+      $values = preg_split('/\s*,\s*/', $value);
+      foreach ($values as $value) {
+        // Allow tokens to be be include in multiple email list.
+        if (!empty($element['#allow_tokens'] && preg_match('/^\[.*\]$/', $value))) {
+          continue;
+        }
+
+        if (!\Drupal::service('email.validator')->isValid($value)) {
+          $form_state->setError($element, t('The email address %mail is not valid.', array('%mail' => $value)));
+          return;
+        }
+      }
+    }
+  }
+
+  /**
+   * Prepares a #type 'email_multiple' render element for theme_element().
+   *
+   * @param array $element
+   *   An associative array containing the properties of the element.
+   *   Properties used: #title, #value, #description, #size, #maxlength,
+   *   #placeholder, #required, #attributes.
+   *
+   * @return array
+   *   The $element with prepared variables ready for theme_element().
+   */
+  public static function preRenderYamlFormEmailMultiple($element) {
+    $element['#attributes']['type'] = 'text';
+    Element::setAttributes($element, ['id', 'name', 'value', 'size', 'maxlength', 'placeholder']);
+    static::setAttributes($element, ['form-textfield', 'form-email-multiple']);
+    return $element;
+  }
+
+}
diff --git a/src/Form/YamlFormHandlerFormBase.php b/src/Form/YamlFormHandlerFormBase.php
index 8b1856f..9df23e1 100644
--- a/src/Form/YamlFormHandlerFormBase.php
+++ b/src/Form/YamlFormHandlerFormBase.php
@@ -116,6 +116,13 @@ abstract class YamlFormHandlerFormBase extends FormBase {
     ];
 
     $form['settings'] = $this->yamlformHandler->buildConfigurationForm([], $form_state);
+    // Get $form['settings']['#attributes']['novalidate'] and apply it to the
+    // $form.
+    // This allows handlers with hide/show logic to skip HTML5 validation.
+    // @see http://stackoverflow.com/questions/22148080/an-invalid-form-control-with-name-is-not-focusable
+    if (isset($form['settings']['#attributes']['novalidate'])) {
+      $form['#attributes']['novalidate'] = 'novalidate';
+    }
     $form['settings']['#tree'] = TRUE;
 
     // Check the URL for a weight, then the YAML form handler,
diff --git a/src/Plugin/YamlFormElement/YamlFormEmailMultiple.php b/src/Plugin/YamlFormElement/YamlFormEmailMultiple.php
new file mode 100644
index 0000000..969a221
--- /dev/null
+++ b/src/Plugin/YamlFormElement/YamlFormEmailMultiple.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\yamlform\Plugin\YamlFormElement\YamlFormEmailConfirm.
+ */
+
+namespace Drupal\yamlform\Plugin\YamlFormElement;
+use Drupal\Core\Utility\LinkGenerator;
+
+/**
+ * Provides a 'email_multiple' element.
+ *
+ * @YamlFormElement(
+ *   id = "yamlform_email_multiple",
+ *   label = @Translation("Email multiple"),
+ *   group = @Translation("Advanced elements")
+ * )
+ */
+class YamlFormEmailMultiple extends Email {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function formatHtml(array &$element, $value, array $options = []) {
+    $format = $this->getFormat($element);
+    switch ($format) {
+      case 'link':
+        $emails = preg_split('/\s*,\s*/', $value);
+        $total = count($emails);
+        $i = 0;
+        $links = [];
+        foreach ($emails as $email) {
+          $links[] = [
+            '#type' => 'link',
+            '#title' => $email,
+            '#url' => \Drupal::pathValidator()->getUrlIfValid('mailto:' . $email),
+            '#suffix' => (++$i !== $total) ? ', ' : '',
+          ];
+        }
+        return $links;
+
+      default:
+        return parent::formatHtml($element, $value, $options);
+    }
+  }
+
+}
diff --git a/src/Plugin/YamlFormHandler/EmailYamlFormHandler.php b/src/Plugin/YamlFormHandler/EmailYamlFormHandler.php
index 22c723e..9dd24eb 100644
--- a/src/Plugin/YamlFormHandler/EmailYamlFormHandler.php
+++ b/src/Plugin/YamlFormHandler/EmailYamlFormHandler.php
@@ -96,6 +96,8 @@ class EmailYamlFormHandler extends YamlFormHandlerBase implements YamlFormHandle
   public function defaultConfiguration() {
     return [
       'to_mail' => 'default',
+      'cc_mail' => '',
+      'bcc_mail' => '',
       'from_mail' => 'default',
       'from_name' => 'default',
       'subject' => 'default',
@@ -139,30 +141,55 @@ class EmailYamlFormHandler extends YamlFormHandlerBase implements YamlFormHandle
     $yamlform_settings = $this->configFactory->get('yamlform.settings');
     $site_settings = $this->configFactory->get('system.site');
     $body_format = ($this->configuration['html']) ? 'html' : 'text';
+    $default_mail = $yamlform_settings->get('mail.default_to_mail') ?: $site_settings->get('mail') ?: ini_get('sendmail_from');
     return [
       'to_mail' => [
-        'type' => 'textfield',
+        'type' => 'yamlform_email_multiple',
+        'group' => 'to',
+        'required' => TRUE,
         'label' => $this->t('Email to address'),
-        'default' => $yamlform_settings->get('mail.default_to_mail') ?: $site_settings->get('mail') ?: ini_get('sendmail_from'),
+        'default' => $default_mail,
+      ],
+      'cc_mail' => [
+        'type' => 'yamlform_email_multiple',
+        'group' => 'to',
+        'required' => FALSE,
+        'label' => $this->t('Email CC address'),
+        'default' => $default_mail,
+      ],
+      'bcc_mail' => [
+        'type' => 'yamlform_email_multiple',
+        'group' => 'to',
+        'required' => FALSE,
+        'label' => $this->t('Email BCC address'),
+        'default' => $default_mail,
       ],
       'from_mail' => [
-        'type' => 'textfield',
+        'type' => 'email',
+        'group' => 'from',
+        'required' => TRUE,
         'label' => $this->t('Email from address'),
-        'default' => $yamlform_settings->get('mail.default_from_mail') ?: $site_settings->get('mail') ?: ini_get('sendmail_from'),
+        'default' => $default_mail,
       ],
       'from_name' => [
         'type' => 'textfield',
+        'group' => 'from',
+        'required' => TRUE,
         'label' => $this->t('Email from name'),
         'default' => $yamlform_settings->get('mail.default_from_name') ?: $site_settings->get('name'),
       ],
       'subject' => [
         'type' => 'textfield',
+        'group' => 'message',
+        'required' => TRUE,
         'label' => $this->t('Email subject'),
         'default' => $yamlform_settings->get('mail.default_subject') ?: 'Form submission from: [yamlform-submission:source-entity]',
       ],
       'body' => [
         'type' => 'yamlform_codemirror',
         'mode' => 'text',
+        'group' => 'message',
+        'required' => TRUE,
         'label' => $this->t('Email body'),
         'default' => $this->getBodyDefaultValues($body_format),
       ],
@@ -175,6 +202,11 @@ class EmailYamlFormHandler extends YamlFormHandlerBase implements YamlFormHandle
   public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
     $settings = $this->getConfigurationSettings();
 
+    // Disable client-side HTML5 validation which is having issues with hidden
+    // element validation.
+    // @see http://stackoverflow.com/questions/22148080/an-invalid-form-control-with-name-is-not-focusable
+    $form['#attributes']['novalidate'] = 'novalidate';
+
     $form['to'] = [
       '#type' => 'details',
       '#title' => $this->t('Send to'),
@@ -198,7 +230,7 @@ class EmailYamlFormHandler extends YamlFormHandlerBase implements YamlFormHandle
       $title = (isset($element['#title'])) ? new FormattableMarkup('@title (@key)', ['@title' => $element['#title'], '@key' => $key]) : $key;
       // Note: Token must use the raw :value for the element.
       $token = "[yamlform-submission:values:$key:value]";
-      if (isset($element['#type']) && in_array($element['#type'], ['email', 'hidden', 'value', 'selected', 'radios'])) {
+      if (isset($element['#type']) && in_array($element['#type'], ['email', 'hidden', 'value', 'selected', 'radios', 'textfield', 'yamlform_email_multiple'])) {
         $mail_element_options[$token] = $title;
       }
       $text_element_options[$token] = $title;
@@ -208,7 +240,8 @@ class EmailYamlFormHandler extends YamlFormHandlerBase implements YamlFormHandle
       $type = $config_settings['type'];
       $mode = isset($config_settings['mode']) ? $config_settings['mode'] : NULL;
       $label = $config_settings['label'];
-      $group = preg_match('/^(to|from)/', $config_name, $match) ? $match[0] : 'message';
+      $group = $config_settings['group'];
+      $required = $config_settings['required'];
 
       $elements_optgroup = (string) $this->t('Elements');
 
@@ -222,11 +255,11 @@ class EmailYamlFormHandler extends YamlFormHandlerBase implements YamlFormHandle
       }
       $options['custom'] = $this->t('Custom...');
 
-      if ($type == 'email') {
+      if (strpos($config_name, '_mail') !== FALSE) {
         if ($mail_element_options) {
           $options[$elements_optgroup] = $mail_element_options;
         }
-        $custom_label = $this->t('Enter email address...');
+        $custom_label = ($type == 'yamlform_email_multiple') ? $this->t('Enter email addresses...') : $this->t('Enter email address...');
       }
       else {
         if ($text_element_options) {
@@ -248,7 +281,7 @@ class EmailYamlFormHandler extends YamlFormHandlerBase implements YamlFormHandle
         '#type' => 'select',
         '#title' => $label,
         '#options' => $options,
-        '#required' => TRUE,
+        '#required' => $required,
         '#default_value' => $value,
       ];
       $form[$group][$config_name . '_custom'] = [
@@ -264,15 +297,11 @@ class EmailYamlFormHandler extends YamlFormHandlerBase implements YamlFormHandle
           ],
         ],
       ];
+      if ($type == 'yamlform_email_multiple') {
+        $form[$group][$config_name . '_custom']['#allow_tokens'] = TRUE;
+      }
 
-      // Issue #2716797: Email handler: not able to set user defined email body
-      // anymore.
-      //
-      // Solution: Add required to all custom field except
-      // 'yamlform_codemirror_text' which throws
-      // "An invalid form control with name='settings[message][body_custom]'
-      // is not focusable." because the textarea is hidden by CodeMirror.
-      if ($type != 'yamlform_codemirror') {
+      if ($required) {
         $form[$group][$config_name . '_custom']['#states']['required'] = [
           ':input[name="settings[' . $group . '][' . $config_name . ']"]' => ['value' => 'custom'],
         ];
@@ -366,7 +395,7 @@ class EmailYamlFormHandler extends YamlFormHandlerBase implements YamlFormHandle
 
     // Get email settings.
     $values = $form_state->getValue('to') + $form_state->getValue('from') + $form_state->getValue('message');
-    foreach (['to_mail', 'from_mail', 'from_name', 'subject', 'body'] as $key) {
+    foreach (['to_mail', 'from_mail', 'from_name', 'cc_mail', 'bcc_mail', 'subject', 'body'] as $key) {
       $value = $values[$key];
       if ($value == 'custom') {
         $value = $values[$key . '_custom'];
diff --git a/src/Tests/YamlFormElementExtrasTest.php b/src/Tests/YamlFormElementExtrasTest.php
index fdfee5b..269eabe 100755
--- a/src/Tests/YamlFormElementExtrasTest.php
+++ b/src/Tests/YamlFormElementExtrasTest.php
@@ -38,6 +38,15 @@ class YamlFormElementExtrasTest extends WebTestBase {
     $this->assertRaw('<input data-drupal-selector="edit-creditcard-number-basic" type="text" id="edit-creditcard-number-basic" name="creditcard_number_basic" value="" size="16" maxlength="16" class="form-textfield form-creditcard_number" />');
 
     /**************************************************************************/
+    // email_multiple
+    /**************************************************************************/
+
+    // Check basic email_multiple.
+    $this->assertRaw('<label for="edit-email-multiple-basic">Multiple email addresses (basic)</label>');
+    $this->assertRaw('<input data-drupal-selector="edit-email-multiple-basic" aria-describedby="edit-email-multiple-basic--description" type="text" id="edit-email-multiple-basic" name="email_multiple_basic" value="" size="60" class="form-textfield form-email-multiple" />');
+    $this->assertRaw('Multiple email addresses may be separated by commas.');
+
+    /**************************************************************************/
     // email_confirm
     /**************************************************************************/
 
@@ -225,6 +234,38 @@ class YamlFormElementExtrasTest extends WebTestBase {
     $this->assertNoRaw('The credit card number is not valid.');
 
     /**************************************************************************/
+    // email_multiple
+    /**************************************************************************/
+
+    // Check invalid second email address.
+    $edit = [
+      'email_multiple_basic' => 'example@example.com, Not a valid email address',
+    ];
+    $this->drupalPostForm('yamlform/test_element_extras', $edit, t('Submit'));
+    $this->assertRaw('The email address <em class="placeholder">Not a valid email address</em> is not valid.');
+
+    // Check invalid token email address.
+    $edit = [
+      'email_multiple_basic' => 'example@example.com, [token]',
+    ];
+    $this->drupalPostForm('yamlform/test_element_extras', $edit, t('Submit'));
+    $this->assertRaw('The email address <em class="placeholder">[token]</em> is not valid.');
+
+    // Check valid second email address.
+    $edit = [
+      'email_multiple_basic' => 'example@example.com, other@other.com',
+    ];
+    $this->drupalPostForm('yamlform/test_element_extras', $edit, t('Submit'));
+    $this->assertRaw("email_multiple_basic: 'example@example.com, other@other.com'");
+
+    // Check valid token email address (via #allow_tokens).
+    $edit = [
+      'email_multiple_advanced' => 'example@example.com, [token]',
+    ];
+    $this->drupalPostForm('yamlform/test_element_extras', $edit, t('Submit'));
+    $this->assertRaw("email_multiple_advanced: 'example@example.com, [token]'");
+
+    /**************************************************************************/
     // email_confirm
     /**************************************************************************/
 
diff --git a/src/Tests/YamlFormElementFormatTest.php b/src/Tests/YamlFormElementFormatTest.php
index fc7b3ac..db8953b 100755
--- a/src/Tests/YamlFormElementFormatTest.php
+++ b/src/Tests/YamlFormElementFormatTest.php
@@ -58,6 +58,7 @@ class YamlFormElementFormatTest extends YamlFormTestBase {
       // Links.
       'email (default)' => '<a href="mailto:example@example.com">example@example.com</a>',
       'email (value)' => 'example@example.com',
+      'email_multiple (default)' => '<a href="mailto:example@example.com">example@example.com</a>, <a href="mailto:other@other.com">other@other.com</a>',
       'tel (default)' => '<a href="tel:999-999-9999">999-999-9999</a>',
       'tel (value)' => '999-999-9999',
       'url (default)' => '<a href="http://example.com">http://example.com</a>',
diff --git a/src/Tests/YamlFormEmailBasicHandlerTest.php b/src/Tests/YamlFormEmailBasicHandlerTest.php
index 423d737..10355fc 100755
--- a/src/Tests/YamlFormEmailBasicHandlerTest.php
+++ b/src/Tests/YamlFormEmailBasicHandlerTest.php
@@ -34,6 +34,9 @@ class YamlFormEmailBasicHandlerTest extends YamlFormTestBase {
     $this->assertContains($sent_email['body'], 'Submitted by: Anonymous');
     $this->assertContains($sent_email['body'], 'First name: John');
     $this->assertContains($sent_email['body'], 'Last name: Smith');
+    $this->assertEqual($sent_email['headers']['From'], 'from@example.com');
+    $this->assertEqual($sent_email['headers']['Cc'], 'cc@example.com');
+    $this->assertEqual($sent_email['headers']['Bcc'], 'bcc@example.com');
 
     // Check sending a custom email using tokens.
     $this->drupalLogin($this->adminFormUser);
diff --git a/templates/yamlform-handler-email-summary.html.twig b/templates/yamlform-handler-email-summary.html.twig
index 6b7f5d9..01b9660 100644
--- a/templates/yamlform-handler-email-summary.html.twig
+++ b/templates/yamlform-handler-email-summary.html.twig
@@ -17,6 +17,8 @@
 #}
 {% if settings.debug %}<b class="color-error">{{ 'Debugging is enabled'|t }}</b><br/>{% endif %}
 <b>{{ 'To:'|t }}</b> {{ settings.to_mail }}<br/>
+{% if settings.cc_mail %}<b>{{ 'Cc:'|t }}</b> {{ settings.cc_mail }}<br/>{% endif %}
+{% if settings.bcc_mail %}<b>{{ 'Bcc:'|t }}</b> {{ settings.bcc_mail }}<br/>{% endif %}
 <b>{{ 'From:'|t }}</b> {{ settings.from_mail }} &lt;{{ settings.from_name }}&gt;<br/>
 <b>{{ 'Subject:'|t }}</b> {{ settings.subject }}<br/>
 <b>{{ 'Settings:'|t }}</b> {{ settings.html ? 'HTML' : 'Plain text'|t }}{{ settings.html and settings.attachments ? '/' : '' }}{{ settings.attachments ? 'Attachments '|t : '' }}
diff --git a/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_element_extras.yml b/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_element_extras.yml
index 2a69b53..1d0cee5 100644
--- a/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_element_extras.yml
+++ b/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_element_extras.yml
@@ -7,6 +7,18 @@ description: 'Test the YAML form modules''s extra elements, includes code(mirror
 elements: |
   '#attributes':
     novalidate: novalidate
+  email_multiple:
+    '#type': details
+    '#title': 'Email multiple (email_multiple)'
+    '#open': true
+    email_multiple_basic:
+      '#type': email_multiple
+      '#title': 'Multiple email addresses (basic)'
+    email_multiple_advanced:
+      '#type': email_multiple
+      '#title': 'Multiple email addresses (advanced)'
+      '#allow_tokens': true
+      '#description': 'Allows tokens to be included in the comma delimited list of emails'
   email_confirm:
     '#type': details
     '#title': 'Email confirmation (email_confirm)'
diff --git a/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_element_formats.yml b/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_element_formats.yml
index 5d869e0..5480a81 100644
--- a/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_element_formats.yml
+++ b/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_element_formats.yml
@@ -129,6 +129,10 @@ elements: |
       '#title': 'email (value)'
       '#format': value
       '#default_value': 'example@example.com'
+    email_multiple:
+      '#type': email_multiple
+      '#title': 'email_multiple (default)'
+      '#default_value': 'example@example.com, other@other.com'
     tel_default:
       '#type': tel
       '#title': 'tel (default)'
@@ -363,6 +367,8 @@ handlers:
     weight: 1
     settings:
       to_mail: default
+      cc_mail: ''
+      bcc_mail: ''
       from_mail: default
       from_name: default
       subject: default
@@ -379,6 +385,8 @@ handlers:
     weight: 2
     settings:
       to_mail: default
+      cc_mail: ''
+      bcc_mail: ''
       from_mail: default
       from_name: default
       subject: default
diff --git a/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_element_formats_tokens.yml b/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_element_formats_tokens.yml
index 68946ad..cbc2af5 100644
--- a/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_element_formats_tokens.yml
+++ b/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_element_formats_tokens.yml
@@ -87,6 +87,8 @@ handlers:
     weight: -9
     settings:
       to_mail: default
+      cc_mail: ''
+      bcc_mail: ''
       from_mail: default
       from_name: default
       subject: default
@@ -109,6 +111,8 @@ handlers:
     weight: -10
     settings:
       to_mail: default
+      cc_mail: ''
+      bcc_mail: ''
       from_mail: default
       from_name: default
       subject: default
diff --git a/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_handler_email.yml b/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_handler_email.yml
index ec81c1d..d9b9a00 100644
--- a/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_handler_email.yml
+++ b/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_handler_email.yml
@@ -101,6 +101,8 @@ handlers:
     weight: 1
     settings:
       to_mail: to@example.com
+      cc_mail: cc@example.com
+      bcc_mail: bcc@example.com
       from_mail: '[yamlform-submission:values:email:value]'
       from_name: '[yamlform-submission:values:first_name] [yamlform-submission:values:last_name]'
       subject: '[yamlform-submission:values:subject:value]'
diff --git a/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_handler_email_advanced.yml b/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_handler_email_advanced.yml
index 780b68e..341677e 100644
--- a/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_handler_email_advanced.yml
+++ b/tests/modules/yamlform_test/config/install/yamlform.yamlform.test_handler_email_advanced.yml
@@ -105,6 +105,8 @@ handlers:
     weight: 1
     settings:
       to_mail: to@example.com
+      cc_mail: ''
+      bcc_mail: ''
       from_mail: '[yamlform-submission:values:email:value]'
       from_name: '[yamlform-submission:values:first_name] [yamlform-submission:values:last_name]'
       subject: '[yamlform-submission:values:subject:value]'
diff --git a/yamlform.module b/yamlform.module
index 9c9db5b..59f6f3f 100755
--- a/yamlform.module
+++ b/yamlform.module
@@ -357,12 +357,19 @@ function yamlform_mail($key, &$message, $params) {
   // Set the header's 'From' to the 'from_mail' so that the YAML form email from
   // value is used instead of site's email address.
   // See: \Drupal\Core\Mail\MailManager::mail.
-  if ($params['from_mail']) {
+  if (!empty($params['from_mail'])) {
     $message['from'] = $params['from_mail'];
     $message['headers']['From'] = $params['from_mail'];
     $message['headers']['Reply-to'] = $params['from_mail'];
     $message['headers']['Return-Path'] = $params['from_mail'];
   }
+
+  if (!empty($params['cc_mail'])) {
+    $message['headers']['Cc'] = $params['cc_mail'];
+  }
+  if (!empty($params['bcc_mail'])) {
+    $message['headers']['Bcc'] = $params['bcc_mail'];
+  }
 }
 
 /**
