diff --git a/inmail.module b/inmail.module
index 4baded7..d2a93ae 100644
--- a/inmail.module
+++ b/inmail.module
@@ -323,8 +323,7 @@ function inmail_mail($key, &$message, $params) {
       /** @var \Drupal\contact\MessageInterface $original */
       $original = $params['original'];
       $message['subject'] = 'Re: ' . $original->getSubject();
-      $message['from'] = \Drupal::config('system.site')->get('mail');
-      $message['headers']['message-id'] = $original->getMessageId();
+      $message['headers']['references'] = $original->getMessageId();
       // Set the mail body.
       $body [] = 'The message has been processed successfully.';
       //TODO: Add log messages in body https://www.drupal.org/node/2822320
diff --git a/src/MessageProcessor.php b/src/MessageProcessor.php
index bb19e4d..2e9157c 100644
--- a/src/MessageProcessor.php
+++ b/src/MessageProcessor.php
@@ -9,6 +9,7 @@ use Drupal\Core\Session\AccountSwitcherInterface;
 use Drupal\inmail\Entity\DelivererConfig;
 use Drupal\inmail\MIME\ParseException;
 use Drupal\inmail\MIME\ParserInterface;
+use Drupal\inmail\Plugin\DataType\BounceData;
 use Drupal\user\Entity\User;
 use Drupal\Core\Logger\RfcLogLevel;
 
@@ -170,18 +171,7 @@ class MessageProcessor implements MessageProcessorInterface {
         }
       }
       $result->success($key);
-
-      // Send message report.
-      //TODO: Skip bounce mails.
-      if ($deliverer->isMessageReport()) {
-        // Trigger result transition mail.
-        $params['result'] = $result;
-        $params['original'] = $message;
-        // Sending message.
-        $recipient = $message->getFrom();
-        $mail_manager = \Drupal::service('plugin.manager.mail');
-        $mail_manager->mail('inmail', 'success', $recipient, \Drupal::languageManager()->getDefaultLanguage()->getId(), $params);
-      }
+      $this->sendMessageReport($result, $message, $deliverer);
     }
     catch (ParseException $e) {
       // Set event message if parsing the message fails.
@@ -207,6 +197,37 @@ class MessageProcessor implements MessageProcessorInterface {
   }
 
   /**
+   * Sends message report after processing mail.
+   *
+   * @param $result \Drupal\inmail\ProcessorResult
+   *  The processor result object.
+   * @param $message \Drupal\inmail\MIME\MessageInterface $original
+   *   Received message.
+   * @param $deliverer \Drupal\inmail\Entity\DelivererConfig
+   *   The Deliverer configuration that delivered the messages.
+   */
+  public function sendMessageReport($result, $message, $deliverer) {
+    /** @var BounceData $bounce_data */
+    $bounce_data = NULL;
+    /** @var \Drupal\inmail\DefaultAnalyzerResult $default_result */
+    $default_result = $result->getAnalyzerResult();
+    if ( $default_result->hasContext('bounce')) {
+      $bounce_data = $default_result->getContext('bounce')->getContextData();
+      if ($deliverer->isMessageReport() && !$bounce_data->isBounce()) {
+        // Trigger result transition mail.
+        $params['result'] = $result;
+        $params['original'] = $message;
+        $recipient = $message->getFrom();
+        $mail_manager = \Drupal::service('plugin.manager.mail');
+        $mail_manager->mail('inmail',
+          'success',
+          $recipient,
+          \Drupal::languageManager()->getDefaultLanguage()->getId(), $params);
+      }
+    }
+  }
+
+  /**
    * {@inheritdoc}
    */
   public function processMultiple(array $messages, DelivererConfig $deliverer) {
diff --git a/tests/src/Kernel/ModeratorForwardTest.php b/tests/src/Kernel/ModeratorForwardTest.php
index 7402149..459f73a 100644
--- a/tests/src/Kernel/ModeratorForwardTest.php
+++ b/tests/src/Kernel/ModeratorForwardTest.php
@@ -95,16 +95,6 @@ class ModeratorForwardTest extends KernelTestBase {
     $this->assertSuccess($deliverer, 'unique_key');
     $this->assertMailCount(0);
     $processor->process('unique_key', $regular_x, $deliverer);
-    // Check message_report
-    $this->assertMailCount(0);
-    $deliverer->setMessageReport(1);
-    $processor->process('unique_key', $regular_x,$deliverer);
-    $this->assertMailCount(1);
-    $mails = $this->getMails();
-    $last_mail = $mails[0];
-    $this->assertEquals('bounces@example.com', $last_mail['from']);
-    $this->assertEquals('Re: BMH testing sample', $last_mail['subject']);
-    $this->assertEquals('The message has been processed successfully.', $last_mail['body']);
 
     // Again check past event log.
     $events = \Drupal::entityTypeManager()->getStorage('past_event')->loadMultiple();
@@ -118,8 +108,32 @@ class ModeratorForwardTest extends KernelTestBase {
     $deliverer = $this->createTestDeliverer();
     $processor->process('unique_key', $regular, $deliverer);
     $this->assertSuccess($deliverer, 'unique_key');
-    $this->assertMailCount(2);
+    $this->assertMailCount(1);
+
+  }
 
+  /**
+   * Tests sending message report after processing message.
+   */
+  public function testSendingReportMessage() {
+    /** @var \Drupal\inmail\MessageProcessor $processor */
+    $processor = \Drupal::service('inmail.processor');
+    $bounce = $this->getMessageFileContents('nouser.eml');
+    $regular = $this->getMessageFileContents('normal.eml');
+    $deliverer = $this->createTestDeliverer();
+    // Testing with bounce.
+    $this->assertMailCount(0);
+    $deliverer->setMessageReport(1);
+    $processor->process('unique_key', $bounce, $deliverer);
+    $this->assertMailCount(0);
+    // Testing with message witch is not bounce.
+    $processor->process('unique_key', $regular, $deliverer);
+    $this->assertMailCount(1);
+    $mails = $this->getMails();
+    $last_mail = $mails[0];
+    $this->assertEquals('bounces@example.com', $last_mail['from']);
+    $this->assertEquals('Re: BMH testing sample', $last_mail['subject']);
+    $this->assertEquals('The message has been processed successfully.', $last_mail['body']);
   }
 
   /**
