diff --git a/src/Abstracts/EmailAbstract.php b/src/Abstracts/EmailAbstract.php
index 9d3524e443db79c58c0b2bef74e6da92cbc8c2a5..8542f0ab2e828ca6c6eff2d28e9e4824eb3fb73c 100644
--- a/src/Abstracts/EmailAbstract.php
+++ b/src/Abstracts/EmailAbstract.php
@@ -2,20 +2,25 @@
 
 namespace WPDesk\Library\WPEmail\Abstracts;
 
+use Exception;
+
 abstract class EmailAbstract implements EmailInterface {
 
     /**
      * @var array
      */
     protected $recipients = [];
+
     /**
      * @var array
      */
     protected $placeholders = [];
+
     /**
      * @var string
      */
     protected $subject = '';
+
     /**
      * @var string
      */
@@ -48,6 +53,19 @@ abstract class EmailAbstract implements EmailInterface {
      */
     abstract public function get_id(): string;
 
+    /**
+     * Set placeholders.
+     *
+     * @param array $placeholders
+     *
+     * @return self
+     */
+    public function set_placeholders( array $placeholders = [] ): self {
+        $this->placeholders = array_merge( $this->placeholders, $placeholders );
+
+        return $this;
+    }
+
     /**
      * Get defined placeholders.
      *
@@ -57,20 +75,46 @@ abstract class EmailAbstract implements EmailInterface {
         return $this->placeholders;
     }
 
+    /**
+     * Get email subject.
+     *
+     * @param string $subject
+     *
+     * @return self
+     */
+    public function set_subject( string $subject ): self {
+        $this->subject = $subject;
+
+        return $this;
+    }
+
     /**
      * Get email subject.
      *
      * @return string
-     * @throws \Exception
+     * @throws Exception
      */
     public function get_subject(): string {
         if ( ! $this->subject ) {
-            throw new \Exception( 'Empty email subject' );
+            throw new Exception( 'Empty email subject' );
         }
 
         return $this->subject;
     }
 
+    /**
+     * Set email heading.
+     *
+     * @param string $heading
+     *
+     * @return self
+     */
+    public function set_heading( string $heading ): self {
+        $this->heading = $heading;
+
+        return $this;
+    }
+
     /**
      * Get email heading.
      *
@@ -80,6 +124,19 @@ abstract class EmailAbstract implements EmailInterface {
         return $this->heading;
     }
 
+    /**
+     * Get valid recipients.
+     *
+     * @param array $recipients
+     *
+     * @return self
+     */
+    public function set_recipients( array $recipients = [] ): self {
+        $this->recipients = $recipients;
+
+        return $this;
+    }
+
     /**
      * Get valid recipients.
      *
@@ -89,6 +146,19 @@ abstract class EmailAbstract implements EmailInterface {
         return $this->recipients;
     }
 
+    /**
+     * Get email headers.
+     *
+     * @param array $headers
+     *
+     * @return self
+     */
+    public function set_headers( array $headers = [] ): self {
+        $this->headers = $headers;
+
+        return $this;
+    }
+
     /**
      * Get email headers.
      *
@@ -98,6 +168,19 @@ abstract class EmailAbstract implements EmailInterface {
         return $this->headers;
     }
 
+    /**
+     * Set attachments.
+     *
+     * @param array $attachments
+     *
+     * @return self
+     */
+    public function set_attachments( array $attachments ): self {
+        $this->attachments = $attachments;
+
+        return $this;
+    }
+
     /**
      * Get email attachments.
      *
@@ -107,6 +190,19 @@ abstract class EmailAbstract implements EmailInterface {
         return $this->attachments;
     }
 
+    /**
+     * Set email type.
+     *
+     * @param string $type
+     *
+     * @return self
+     */
+    public function set_type( string $type = 'text/html' ): self {
+        $this->type = $type;
+
+        return $this;
+    }
+
     /**
      * Get email type.
      *
@@ -116,14 +212,28 @@ abstract class EmailAbstract implements EmailInterface {
         return $this->type;
     }
 
+    /**
+     * Get email content.
+     *
+     * @param string $content
+     *
+     * @return self
+     */
+    public function set_content( string $content ): self {
+        $this->content = $content;
+
+        return $this;
+    }
+
     /**
      * Get email content.
      *
      * @return string
+     * @throws Exception
      */
     public function get_content(): string {
         if ( ! $this->content ) {
-            throw new \Exception( 'Empty email subject' );
+            throw new Exception( 'Empty email content' );
         }
 
         return '';
@@ -136,4 +246,5 @@ abstract class EmailAbstract implements EmailInterface {
         return '';
     }
 
+
 }