Swift_Transport_EsmtpTransport::setExtensionHandlers PHP Method

setExtensionHandlers() public method

Set ESMTP extension handlers.
public setExtensionHandlers ( array $handlers ) : Swift_Transport_EsmtpTransport
$handlers array
return Swift_Transport_EsmtpTransport
    public function setExtensionHandlers(array $handlers)
    {
        $assoc = array();
        foreach ($handlers as $handler) {
            $assoc[$handler->getHandledKeyword()] = $handler;
        }
        uasort($assoc, function ($a, $b) {
            return $a->getPriorityOver($b->getHandledKeyword());
        });
        $this->handlers = $assoc;
        $this->setHandlerParams();
        return $this;
    }

Usage Example

 public function testExtensionsCanModifyRcptParams()
 {
     $buf = $this->_getBuffer();
     $dispatcher = $this->_createEventDispatcher();
     $smtp = new Swift_Transport_EsmtpTransport($buf, array(), $dispatcher);
     $ext1 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
     $ext2 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
     $ext3 = $this->getMockery('Swift_Transport_EsmtpHandler')->shouldIgnoreMissing();
     $message = $this->_createMessage();
     $message->shouldReceive('getFrom')->zeroOrMoreTimes()->andReturn(array('me@domain' => 'Me'));
     $message->shouldReceive('getTo')->zeroOrMoreTimes()->andReturn(array('foo@bar' => null));
     $buf->shouldReceive('readLine')->once()->with(0)->andReturn("220 server.com foo\r\n");
     $buf->shouldReceive('write')->once()->with('~^EHLO .+?\\r\\n$~D')->andReturn(1);
     $buf->shouldReceive('readLine')->once()->with(1)->andReturn("250-ServerName.tld\r\n");
     $buf->shouldReceive('readLine')->once()->with(1)->andReturn("250-AUTH PLAIN LOGIN\r\n");
     $buf->shouldReceive('readLine')->once()->with(1)->andReturn("250 SIZE=123456\r\n");
     $buf->shouldReceive('write')->once()->with("MAIL FROM:<me@domain>\r\n")->andReturn(2);
     $buf->shouldReceive('readLine')->once()->with(2)->andReturn("250 OK\r\n");
     $buf->shouldReceive('write')->once()->with("RCPT TO:<foo@bar> FOO ZIP\r\n")->andReturn(3);
     $buf->shouldReceive('readLine')->once()->with(3)->andReturn("250 OK\r\n");
     $this->_finishBuffer($buf);
     $ext1->shouldReceive('getHandledKeyword')->zeroOrMoreTimes()->andReturn('AUTH');
     $ext1->shouldReceive('getRcptParams')->once()->andReturn('FOO');
     $ext1->shouldReceive('getPriorityOver')->zeroOrMoreTimes()->with('AUTH')->andReturn(-1);
     $ext2->shouldReceive('getHandledKeyword')->zeroOrMoreTimes()->andReturn('SIZE');
     $ext2->shouldReceive('getRcptParams')->once()->andReturn('ZIP');
     $ext2->shouldReceive('getPriorityOver')->zeroOrMoreTimes()->with('AUTH')->andReturn(1);
     $ext3->shouldReceive('getHandledKeyword')->zeroOrMoreTimes()->andReturn('STARTTLS');
     $ext3->shouldReceive('getRcptParams')->never();
     $smtp->setExtensionHandlers(array($ext1, $ext2, $ext3));
     $smtp->start();
     $smtp->send($message);
 }