diff --git a/includes/webform.emails.inc b/includes/webform.emails.inc
index 4c44a01..77e4f9c 100644
--- a/includes/webform.emails.inc
+++ b/includes/webform.emails.inc
@@ -39,6 +39,9 @@ function webform_emails_form($form, $form_state, $node) {
     $form['emails'][$eid]['from'] = array(
       '#markup' => check_plain(webform_format_email_address($email['from_address'], $email['from_name'], $node, NULL, FALSE)),
     );
+    $form['emails'][$eid]['conditional'] = array(
+      '#markup' => ($email['data']['conditional_component']) ? t('Enabled') : t('Disabled'),
+    );
   }
 
   $form['add'] = array(
@@ -94,7 +97,7 @@ function theme_webform_emails_form($variables) {
   $form = $variables['form'];
   $node = $form['#node'];
 
-  $header = array(t('E-mail to'), t('Subject'), t('From'), array('data' => t('Operations'), 'colspan' => 2));
+  $header = array(t('E-mail to'), t('Subject'), t('From'), t('Conditional'), array('data' => t('Operations'), 'colspan' => 2));
   $rows = array();
 
   if (!empty($form['emails'])) {
@@ -104,18 +107,19 @@ function theme_webform_emails_form($variables) {
         drupal_render($form['emails'][$eid]['email']),
         drupal_render($form['emails'][$eid]['subject']),
         drupal_render($form['emails'][$eid]['from']),
+        drupal_render($form['emails'][$eid]['conditional']),
         l(t('Edit'), 'node/' . $node->nid . '/webform/emails/' . $eid),
         l(t('Delete'), 'node/' . $node->nid . '/webform/emails/' . $eid . '/delete'),
       );
     }
   }
   else {
-    $rows[] = array(array('data' => t('Currently not sending e-mails, add an e-mail recipient below.'), 'colspan' => 5));
+    $rows[] = array(array('data' => t('Currently not sending e-mails, add an e-mail recipient below.'), 'colspan' => 6));
   }
 
   // Add a row containing form elements for a new item.
   $row_data = array(
-    array('colspan' => 3, 'data' => drupal_render($form['add'])),
+    array('colspan' => 4, 'data' => drupal_render($form['add'])),
     array('colspan' => 2, 'data' => drupal_render($form['add_button'])),
   );
   $rows[] = array('data' => $row_data, 'class' => array('webform-add-form'));
@@ -317,6 +321,58 @@ function webform_email_edit_form($form, $form_state, $node, $email = array()) {
 
   $form['#validate'] = array('webform_email_address_validate', 'webform_email_edit_form_validate');
 
+  // Add conditional fields.
+  $conditional_data = isset($email['data']) ? $email['data'] : array();
+
+  $conditional_components = array();
+  $counter = 0;
+  foreach ($node->webform['components'] as $cid => $test_component) {
+    if (webform_component_feature($test_component['type'], 'conditional')) {
+      $conditional_components[$cid] = $test_component;
+    }
+    $counter++;
+  }
+
+  $form['conditional'] = array(
+    '#weight' => 19,
+    '#type' => 'fieldset',
+    '#title' => t('Conditional rules'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+    '#description' => t('Create a rule to control whether or not to send messages to this email address.'),
+    '#tree' => FALSE,
+  );
+  $form['conditional']['conditional_data'] = array(
+    '#tree' => TRUE,
+  );
+  $form['conditional']['conditional_data']['conditional_component'] = array(
+    '#type' => 'select',
+    '#title' => t('Component'),
+    '#options' => array(0 => t(' - disabled - ')) + webform_component_list($node, $conditional_components, FALSE, TRUE),
+    '#description' => t('Select another component to decide whether to send messages to this email address.'),
+    '#default_value' => (!empty($conditional_data)) ? $conditional_data['conditional_component'] : 0,
+  );
+  $form['conditional']['conditional_data']['conditional_operator'] = array(
+    '#type' => 'select',
+    '#title' => t('Operator'),
+    '#options' => array(
+      '=' => t('Is one of'),
+      '!=' => t('Is not one of')
+    ),
+    '#description' => t('Determines whether the list below is inclusive or exclusive.'),
+    '#default_value' => (!empty($conditional_data)) ? $conditional_data['conditional_operator'] : '',
+  );
+  $form['conditional']['conditional_data']['conditional_values'] = array(
+    '#type' => 'textarea',
+    '#title' => t('Values'),
+    '#description' => t('List values, one per line, that will trigger this action. If you leave this blank, this component will always display.'),
+    '#default_value' => (!empty($conditional_data)) ? $conditional_data['conditional_values'] : '',
+  );
+
+  if (empty($conditional_components)) {
+    $form['conditional']['#access'] = FALSE;
+  }
+
   return $form;
 }
 
@@ -404,6 +460,7 @@ function webform_email_edit_form_submit($form, &$form_state) {
   $email = array(
     'eid' => $form_state['values']['eid'],
     'nid' => $node->nid,
+    'data' => $form_state['values']['conditional_data'],
   );
 
   foreach (array('email', 'from_name', 'from_address', 'subject') as $field) {
diff --git a/includes/webform.submissions.inc b/includes/webform.submissions.inc
index b8f5009..2e660b3 100644
--- a/includes/webform.submissions.inc
+++ b/includes/webform.submissions.inc
@@ -184,6 +184,12 @@ function webform_submission_send_mail($node, $submission, $emails = NULL) {
   // Create a themed message for mailing.
   $send_count = 0;
   foreach ($emails as $eid => $email) {
+
+    // Check for conditional rules
+    if (_webform_submission_email_condition_check($email, $submission) === FALSE) {
+      continue;
+    }
+
     // Set the HTML property based on availablity of MIME Mail.
     $email['html'] = ($email['html'] && webform_email_html_capable());
 
@@ -447,11 +453,41 @@ function webform_submission_resend($form, $form_state, $node, $submission) {
       $email_addresses[$key] = webform_format_email_address($email_address, NULL, $node, $submission, FALSE);
     }
     $valid_email = !empty($email_addresses[0]) && valid_email_address($email_addresses[0]);
+
+    $send_email = _webform_submission_email_condition_check($email, $submission);
+
     $form['resend'][$eid] = array(
       '#type' => 'checkbox',
-      '#default_value' => $valid_email ? TRUE : FALSE,
+      '#default_value' => $send_email ? TRUE : FALSE,
       '#disabled' => $valid_email ? FALSE : TRUE,
     );
+
+    $form['submission'][$eid]['values'] = array(
+      '#markup' => '',
+    );
+    $form['emails'][$eid]['condition'] = array(
+      '#markup' => '',
+    );
+    if (isset($email['data']['conditional_values'])) {
+      $conditional_cid = $email['data']['conditional_component'];
+      $conditional_component = $node->webform['components'][$conditional_cid];
+      $conditional_operator = ($email['data']['conditional_operator'] == '=') ? t('Is one of') : t('Is not one of');
+      $form['emails'][$eid]['condition']['#markup'] = implode('<br />', array(
+        t('Component: @name', array(
+          '@name' => $conditional_component['name'],
+        )),
+        t('Operator: @operator', array(
+          '@operator' => $conditional_operator,
+        )),
+        t('Values: @values', array(
+          '@values' => $email['data']['conditional_values']
+        ))
+      ));
+
+      $submission_value = isset($submission->data[$conditional_cid]['value'][0]) ? $submission->data[$conditional_cid]['value'][0] : t('N/A');
+      $form['submission'][$eid]['values']['#markup'] = $submission_value;
+    }
+
     $form['emails'][$eid]['email'] = array(
       '#markup' => implode('<br />', $email_addresses),
     );
@@ -494,7 +530,8 @@ function webform_submission_resend_submit($form, &$form_state) {
   $emails = array();
   foreach ($form_state['values']['resend'] as $eid => $checked) {
     if ($checked) {
-      $emails[] = $form['#node']->webform['emails'][$eid];
+      $emails[$eid] = $form['#node']->webform['emails'][$eid];
+      $emails[$eid]['bypass_condition'] = TRUE;
     }
   }
   $sent_count = webform_submission_send_mail($node, $submission, $emails);
@@ -521,20 +558,22 @@ function webform_submission_resend_submit($form, &$form_state) {
 function theme_webform_submission_resend($variables) {
   $form = $variables['form'];
 
-  $header = array('', t('E-mail to'), t('Subject'));
+  $header = array('', t('Conditional rules'), t('Submission value for conditional component'), t('E-mail to'), t('Subject'));
   $rows = array();
   if (!empty($form['emails'])) {
     foreach (element_children($form['emails']) as $eid) {
       // Add each component to a table row.
       $rows[] = array(
         drupal_render($form['resend'][$eid]),
+        drupal_render($form['emails'][$eid]['condition']),
+        drupal_render($form['submission'][$eid]['values']),
         drupal_render($form['emails'][$eid]['email']),
         drupal_render($form['emails'][$eid]['subject']),
       );
     }
   }
   else {
-    $rows[] = array(array('data' => t('This webform is currently not setup to send emails.'), 'colspan' => 3));
+    $rows[] = array(array('data' => t('This webform is currently not setup to send emails.'), 'colspan' => 5));
   }
   $output = '';
   $output .= theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('id' => 'webform-emails')));
@@ -885,6 +924,55 @@ function _webform_submission_total_limit_check($node) {
 }
 
 /**
+ * Check if the given submission allows for mail to be sent to the given email
+ * record.
+ *
+ * @param $email
+ *   The email record to check.
+ * @param $submission
+ *   The webform submission object to be used in sending e-mails.
+ * @return
+ *   Boolean TRUE if any condition set on the given e-mail record matches
+ *   the values in the given submission. Otherwise FALSE.
+ */
+function _webform_submission_email_condition_check($email, $submission) {
+
+  $result = TRUE;
+
+  if (isset($email['bypass_condition']) && $email['bypass_condition']) {
+    return $result;
+  }
+
+  if (!$email['data']['conditional_component']) {
+    return $result;
+  }
+
+  if (isset($email['data']['conditional_values'])) {
+    $conditional_cid = $email['data']['conditional_component'];
+    $input_value = isset($submission->data[$conditional_cid]['value'][0]) ? $submission->data[$conditional_cid]['value'][0] : NULL;
+    $input_values = is_array($input_value) ? $input_value : array($input_value);
+    $test_values = array_map('trim', explode("\n", $email['data']['conditional_values']));
+
+    if (empty($input_values) && !empty($test_values)) {
+      $result = FALSE;
+    }
+    else {
+      foreach ($input_values as $input_value) {
+        if ($result = in_array($input_value, $test_values)) {
+          break;
+        }
+      }
+    }
+
+    if ($email['data']['conditional_operator'] == '!=') {
+      $result = !$result;
+    }
+  }
+
+  return $result;
+}
+
+/**
  * Preprocess function for webform-submission.tpl.php.
  */
 function template_preprocess_webform_submission(&$vars) {
diff --git a/webform.install b/webform.install
index 19dacf4..11792f7 100644
--- a/webform.install
+++ b/webform.install
@@ -249,6 +249,13 @@ function webform_schema() {
         'not null' => TRUE,
         'default' => 0,
       ),
+      'data' => array(
+        'type' => 'blob',
+        'not null' => FALSE,
+        'size' => 'big',
+        'serialize' => TRUE,
+        'description' => 'Arbitrary data that do not warrant a dedicated column.',
+      ),
     ),
     'primary key' => array('nid', 'eid'),
   );
@@ -831,3 +838,20 @@ function webform_update_7319(&$sandbox) {
 function webform_update_7320() {
   db_query("UPDATE {file_managed} SET status = 1 WHERE fid IN (SELECT fid FROM {file_usage} WHERE module = :module_name)", array(':module_name' => 'webform'));
 }
+
+/**
+ * Add data column to webform_emails for storing arbitrary data.
+ */
+function webform_update_7321() {
+
+  if (!db_field_exists('webform_emails', 'data')) {
+    db_add_field('webform_emails', 'data', array(
+      'type' => 'blob',
+      'not null' => FALSE,
+      'size' => 'big',
+      'serialize' => TRUE,
+      'description' => 'Arbitrary data that do not warrant a dedicated column.',
+    ));
+
+  }
+}
diff --git a/webform.module b/webform.module
index 2fffd0c..9d3fc9f 100644
--- a/webform.module
+++ b/webform.module
@@ -1306,9 +1306,10 @@ function webform_node_load($nodes, $types) {
       ->execute()
       ->fetchAllAssoc('eid', PDO::FETCH_ASSOC);
 
-    // Unserialize the exclude component list for e-mails.
+    // Unserialize the exclude component list and data column for e-mails.
     foreach ($nodes[$nid]->webform['emails'] as $eid => $email) {
       $nodes[$nid]->webform['emails'][$eid]['excluded_components'] = array_filter(explode(',', $email['excluded_components']));
+      $nodes[$nid]->webform['emails'][$eid]['data'] = unserialize($nodes[$nid]->webform['emails'][$eid]['data']);
       if (variable_get('webform_format_override', 0)) {
         $nodes[$nid]->webform['emails'][$eid]['html'] = variable_get('webform_default_format', 0);
       }
