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

How to setup django | django installation ubuntu

Introduction to Django 1.     High level web framework 1.     Basic modules, classes, and tools to quickly develop and deploy web apps 2.     Contains an ORM (Object-Relational Mapper) that allows for the use of standard Python language syntax when interfacing with a back-end database. 1.     Developer need not learn SQL, DDL, etc! 3.     Provides a template framework that allows HTML, XML, and other “documents” to be converted into “templates”, which can then be converted to “output” via a wide range of substitution techniques. 4.     Elegant URL support (fancy, beautiful URL's, no “?blah=blah”, etc.) 5.     Multi-lingual 2.     Fast and easy to use, robust, flexible, and lots of contributed components available! 1.     Built in administrative interface to manage data models. 2.     Built-in authentication/access control components 3.     Contributed Installing & Configuring Django Components 1.     Django can be downloaded from http://w

How to start working with Django web framework

 Django is a powerful web framework for Python that makes it easy to build web applications quickly. Here are some steps you can follow to start learning Django programming: Install Python: Django requires Python to be installed on your machine. If you don ' t already have Python installed, you can download it from the official Python website (https://www.python.org/downloads/). Install Django: Once you have Python installed, you can use the pip package manager to install Django. Open a terminal or command prompt and type the following command: pip install django Create a new Django project: To create a new Django project, open a terminal or command prompt and navigate to the directory where you want to store your project. Then run the following command: django - admin startproject myproject Replace myproject with the name you want to give to your project. This will create a new Django project with the specified name in the current directory. Run the development