diff -u b/includes/webform.submissions.inc b/includes/webform.submissions.inc
--- b/includes/webform.submissions.inc
+++ b/includes/webform.submissions.inc
@@ -664,7 +664,8 @@
   _webform_components_tree_build($components, $component_tree, 0, $page_count);
 
   if (!empty($email['exclude_empty'])) {
-    _webform_submission_remove_empty_components($submission->data, $components, $component_tree);
+    $excluded_components = module_invoke_all('webform_submission_exclude_empty_excluded_components');
+    _webform_submission_remove_empty_components($submission->data, $components, $component_tree, $excluded_components);
   }
 
   // Make sure at least one field is available.
@@ -692,20 +693,33 @@
  *   Components from webform_submission_render().
  * @param $tree
  *   Component tree or child tree from webform_submission_render() or recursion.
- * @return
+ * @param array $excluded_types
+ *   Component types that should never be removed.
+ *
+ * @return bool
  *   TRUE: tree doesn't have children.
  *   FALSE: tree has children.
  */
-function _webform_submission_remove_empty_components($data, &$components, &$tree) {
+function _webform_submission_remove_empty_components($data, &$components, &$tree, array $excluded_types = array()) {
   foreach ($tree['children'] as $key => $child) {
-    if (!isset($data[$child['cid']]) || (is_array($data[$key]) && _webform_submission_recursive_is_empty_array($data[$key]))) {
-      // TODO Add hook so modules can implement more form element types with children.
-      if ($child['type'] != 'fieldset' || _webform_submission_remove_empty_components($data, $components, $tree['children'][$key])) {
-        unset($tree['children'][$key]);
-        unset($components[$key]);
+    // Ignore excluded types.
+    if (!in_array($child['type'], $excluded_types)) {
+      // Check if this child is empty.
+      if (!isset($data[$child['cid']]) || (is_array($data[$key]) && _webform_submission_recursive_is_empty_array($data[$key]))) {
+        // TODO Add hook so modules can implement more form element types with children.
+        // If not fieldset remove, if fieldset do recursion and remove if empty.
+        if (
+          $child['type'] != 'fieldset' ||
+          _webform_submission_remove_empty_components($data, $components, $tree['children'][$key], $excluded_types)
+        ) {
+          unset($tree['children'][$key]);
+          unset($components[$key]);
+        }
       }
     }
   }
+
+  // Return if leftover children so the recursion knows if the fieldset can be removed or not.
   return count($tree['children']) == 0;
 }
 
only in patch2:
unchanged:
--- a/webform.api.php
+++ b/webform.api.php
@@ -277,6 +277,19 @@ function hook_webform_submission_render_alter(&$renderable) {
 }
 
 /**
+ * Define component types that should never be removed when
+ * "Exclude empty components" is enabled for webform emails.
+ *
+ * @return array
+ *   Component types that should be excluded.
+ */
+function hook_webform_submission_exclude_empty_excluded_components() {
+  return array(
+    'pagebreak',
+  );
+}
+
+/**
  * Modify a loaded Webform component.
  *
  * IMPORTANT: This hook does not actually exist because components are loaded
