I wrote this a few weeks back and it seems to be working alright. It only
supports AUTH LOGIN and AUTH PLAIN though.

<?php
require_once 'Zend/Mail/Transport/Smtp.php';

class My_Zend_Mail_Transport_Smtp_Auth extends Zend_Mail_Transport_Smtp {

   /[EMAIL PROTECTED]
    * Authentication types
    * @var string
    */
   const LOGIN = 'LOGIN';
   const PLAIN = 'PLAIN';
   /[EMAIL PROTECTED]/

   /**
    * @param string $username
    * @param string $password
    * @param string $method
    */
   protected function authenticate($username, $password, $method =
self::PLAIN) {
       switch($method) {
           case self::LOGIN:
               $this->authenticateLogin($username, $password);
           break;

           case self::PLAIN:
               $this->authenticatePlain($username, $password);
           break;
       }
   }

   /**
    * @param  string $username
    * @param  string $password
    * @throws Zend_Mail_Transport_Exception
    */
   protected function authenticateLogin($username, $password) {
       $this->_send('AUTH LOGIN');

       try {
           $this->_expect(334);
       } catch(Zend_Mail_Transport_Exception $e) {
           if(substr($e->getMessage(), 0, 3) == 503) {
               return;
           }
           throw $e;
       }

       $this->_send(base64_encode($username));
       $this->_expect(334);
       $this->_send(base64_encode($password));
       $this->_expect(235);
   }

   /**
    * @param  string $username
    * @param  string $password
    * @throws Zend_Mail_Transport_Exception
    */
   protected function authenticatePlain($username, $password) {
       $this->_send('AUTH PLAIN');

       try {
           $this->_expect(334);
       } catch(Zend_Mail_Transport_Exception $e) {
           if(substr($e->getMessage(), 0, 3) == 503) {
               return;
           }
           throw $e;
       }

       $this->_send(base64_encode(chr(0) . $username . chr(0) .
$password));
       $this->_expect(235);
   }

}

On 1/31/07, Sanjay Aggarwal <[EMAIL PROTECTED]> wrote:

 Right Now SMTP authentication is not there in the mail class. Is there
anyone who has implemented SMTP authentication with Zend Framework any how?
If so - do let me know asap. That will be a great help for us.

Regards,
Sanjay Aggarwal

Reply via email to