for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Genkgo\Mail\Protocol\Smtp\Capability;
use Genkgo\Mail\EmailAddress;
use Genkgo\Mail\Protocol\ConnectionInterface;
use Genkgo\Mail\Protocol\Smtp\BackendInterface;
use Genkgo\Mail\Protocol\Smtp\CapabilityInterface;
use Genkgo\Mail\Protocol\Smtp\Session;
final class RcptToCapability implements CapabilityInterface
{
/**
* @var BackendInterface
*/
private $backend;
* RcptToCapability constructor.
* @param BackendInterface $backend
public function __construct(BackendInterface $backend)
$this->backend = $backend;
}
* @param ConnectionInterface $connection
* @param Session $session
* @return Session
public function manifest(ConnectionInterface $connection, Session $session): Session
try {
$address = new EmailAddress(substr($session->getCommand(), 11, -1));
if ($this->backend->contains($address) === false) {
$connection->send('550 Unknown mailbox');
return $session;
$connection->send('250 OK');
return (clone $session)->withRecipient($address);
} catch (\InvalidArgumentException $e) {
$connection->send('501 Invalid recipient');
* @return string
public function advertise(): string
return 'RCPT TO';