diff --git a/mailcomment.module b/mailcomment.module
index 037c378..a5d2e22 100644
--- a/mailcomment.module
+++ b/mailcomment.module
@@ -534,18 +534,38 @@ function mailcomment_signature($params) {
   return md5(implode('-', $params));
 }
 
-// Need to clean up body text after the comment is parsed and before it is processed
+/**
+ * Implementation of hook_feeds_after_parse()
+ *
+ * Cleans up message body.
+ */
 function mailcomment_feeds_after_parse(FeedsImporter $importer, FeedsSource $source) {
-  // Now trim out the rest of the message if separator text exists
-  // @ TODO May fail for html mails
+  // @TODO May fail for html mails
+  $delimiters = array();
+  if (variable_get('mailcomment_strip_quoted_text', 1)) {
+    $delimiters += array(
+      "On \d{1,2}[\/\-]{1}\d{1,2}[\/\-]{1}\d{1,2},", // Gmail form 1
+      "On \w{3}, \w{3} \d{1,2}, \d{4} at \d{1,2}:\d{1,2} [AP]M", // Gmail form 1
+      "On \w{3}, \w{3} \d{1,2}, \d{4} at \d{1,2}:\d{1,2} [AP]M", // Gmail form 2
+      "On \d{1,2}\/\d{1,2}\/\d{4} \d{1,2}:\d{1,2} [AP]M,", // Thunderbird
+      "On [A-Z][a-z]{2} [0-9]{1,2}, [0-9]{4}, at [0-9]{1,2}:[0-9]{2} [AP]M, [a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4} wrote", // Mac mail
+      "On [A-Z][a-z]{2} [0-9]{1,2}, [0-9]{4}, at [0-9]{1,2}:[0-9]{2} [AP]M,", // Mac mail
+      '-----\s?Original Message\s?-----', // Outlook express
+      'From:(\s*)[A-Za-z0-9._%+-]+@[A-Za-z0-9._%+-]+\.[A-Za-z]{2,3}(\s*)\[mailto:[A-Za-z0-9._%+-]+@[A-Za-z0-9._%+-]+\.[A-Za-z]{2,3}\]', // Outlook legacy
+      'From:.*Sent:.*To:.*Subject:', // Fallback
+    );
+  }
   if ($marker = variable_get('mailcomment_reply_text', t('((( Reply ABOVE this LINE to POST a COMMENT )))'))) {
-    // Allow other modules to act on the text and node object before we start stripping things from it.
-    mailcomment_invoke_mailcomment_alter($node, 'pre');
-    // Now the dirty part. May need some more clean up for line endings, spare html, etc...
-    $pos = strpos($node->body, $marker);
-    if ($pos !== FALSE) {
-      // Mailhandler brings this in as a full node with teaser/body but we need to change context to comment
-      $node->body = drupal_substr($node->body, 0, $pos);
+    $delimiters[] = '[> ]*'. preg_quote($marker);
+  }
+
+  $expression = '/('. implode('|', $delimiters) .')/';
+
+  foreach ($source->batch->items as $key => $message) {
+    $matches = array();
+    mailcomment_invoke_mailcomment_alter($message, 'pre');
+    if (preg_match($expression, $message['origbody'], $matches, PREG_OFFSET_CAPTURE)) {
+      $source->batch->items[$key]['origbody'] = drupal_substr($message['origbody'], 0, $matches[0][1]);
     }
   }
 }
