Skip to main content

HTML Emailing in ZF2

<?php
namespace Application\Model;
use Zend\Mail\Message;
use Zend\Mime\Message as MimeMessage;
use Zend\Mime\Part as MimePart;
use Zend\Mail\Transport\Sendmail as SendmailTransport;
use Zend\Mail\Transport\Smtp as SmtpTransport;
use Zend\Mail\Transport\SmtpOptions;
use Zend\View\Renderer\PhpRenderer;
use Zend\View\Resolver\TemplatePathStack;
use Zend\View\Model\ViewModel;
use Zend\View\Model\ModelInterface;

class ApiEmail extends ApiInterface {

   protected $From = "XXXXX@gmail.com";
   protected $FromName = "XXXX";
   protected $To = "" ;
   protected $Subject = "" ;
   protected $Body = "" ;
   protected $Cc = "XXXXXX@gmail.com";
   protected $Bcc = "XXXXX@gmail.com" ;
   protected $ReplyTo = "XXXX@gmail.com" ;
   protected $Sender = "" ;
   protected $Encoding = "UTF-8" ;
   protected $MESSAGE ;
// getter setter
   public function __get($prop){ return $this->$prop;   }
   /**
    * Saves protected properties
    * @param string $prop
    * @param mixed $val
    */
   public function __set($prop, $val){   $this->$prop = $val; }
   public function prepareData() {


$message = new Message();  
       $message->addFrom( $this->__get('From'), $this->__get('FromName') );
       $message->addTo($this->__get('To'));
  $message->setSubject($this->__get('Subject'));
$message->setBody($this->__get('Body'));

$message->addCc($this->__get('Cc'));
        $message->addBcc($this->__get('Bcc'));

        $message->addReplyTo( $this->__get('ReplyTo') , "Hello Bihari Doctor");
        $message->setEncoding( $this->__get('Encoding'));
        $this->__set("MESSAGE" , $message );

        // echo  $message->toString(); exit();
}
public function smtpOptions(){

$options = new SmtpOptions(array(
'name' => 'doctors.patel.com',
'host' => 'gmail.com',
'connection_class' => 'plain',
'port' => '587',
'connection_config' => array(
'ssl' => 'TLS', /* Page would hang without this line being added */
'username' => 'XXXXXXXXXXXXXXXXXXXX',
'password' => 'XXXXXXXXXXXXXXXXXXXXXXX',
),
));
return $options;

}

   public function send() {
 
   $this->prepareData();
   // $transport = new SendmailTransport();
   $transport = new SmtpTransport();
   $transport->setOptions($this->smtpOptions());
   $transport->send( $this->__get('MESSAGE') );
   }


   public function loadTpl( $Data  = array() , $temlate = "join" ){
   
    $renderer = new PhpRenderer();
    $resolver = new TemplatePathStack();
    $view = new ViewModel( array( 'data' => $Data) );
$view->setTerminal(true);
$view->setTemplate( $temlate );
$resolver->setPaths(array(
    __DIR__ . '/../../../view/emails/'
    ));
    $renderer->setResolver($resolver);
$content = $renderer->render($view);
if ($view instanceof ModelInterface) {
           $body = $renderer->render($view);
       }
       else {
           throw new \Exception('Invalid view for mail body');
       }
    $html = new MimePart($content);
$html->type = "text/html";
$body = new MimeMessage();
$body->setParts(array($html));
return $body;
   }
   

// email
public function sendJoinEmail($Data){  

            $this->__set("To", $Data['email']  );
            $body = $this->loadTpl( $Data , "join" );
            $this->__set("Subject", "Doctor Join Request" );
            $this->__set("Body", $body );
            $this->__set("Encoding", "UTF-8"  );
            $this->send();
        }

}






and
Folder emails contain join.phtml file 

Comments

Popular posts from this blog

What are the advantages and disadvantages of using zsh instead of bash (or other shells)?

Everything y ou kno w from bash  still  applies, but zsh does a bunch of other useful things.  I  know that I use only a small subset of them, but t hese are especially useful for me: Extended globbing: For example,  *(.)  matches only regular files, not directories, whereas  a*z(/)  matches directories whose names start with  a  and end with  z . There are a bunch of other things, such as  **  as described by  Ole Tange . Inline glob expansion: For example, type  rm *.pdf  and then hit tab. The glob  *.pdf  will expand inline into the list of .pdf files, which means you can change the result of the expansion, perhaps by removing from the command the name of one particular file you don’t want to  rm . Interactive path expansion: Type  cd /u/l/b  and hit tab. If there is only one existing path each of whose components start...