host = $host; $this->port = $port; $this->crypto = $crypto; } /** * Set a Pop3Connection to delegate to instead of connecting directly. * * @return $this */ public function setConnection(Swift_Plugins_Pop_Pop3Connection $connection) { $this->connection = $connection; return $this; } /** * Bind this plugin to a specific SMTP transport instance. */ public function bindSmtp(Swift_Transport $smtp) { $this->transport = $smtp; } /** * Set the connection timeout in seconds (default 10). * * @param int $timeout * * @return $this */ public function setTimeout($timeout) { $this->timeout = (int) $timeout; return $this; } /** * Set the username to use when connecting (if needed). * * @param string $username * * @return $this */ public function setUsername($username) { $this->username = $username; return $this; } /** * Set the password to use when connecting (if needed). * * @param string $password * * @return $this */ public function setPassword($password) { $this->password = $password; return $this; } /** * Connect to the POP3 host and authenticate. * * @throws Swift_Plugins_Pop_Pop3Exception if connection fails */ public function connect() { if (isset($this->connection)) { $this->connection->connect(); } else { if (!isset($this->socket)) { if (!$socket = fsockopen( $this->getHostString(), $this->port, $errno, $errstr, $this->timeout)) { throw new Swift_Plugins_Pop_Pop3Exception(sprintf('Failed to connect to POP3 host [%s]: %s', $this->host, $errstr)); } $this->socket = $socket; if (false === $greeting = fgets($this->socket)) { throw new Swift_Plugins_Pop_Pop3Exception(sprintf('Failed to connect to POP3 host [%s]', trim($greeting ?? ''))); } $this->assertOk($greeting); if ($this->username) { $this->command(sprintf("USER %s\r\n", $this->username)); $this->command(sprintf("PASS %s\r\n", $this->password)); } } } } /** * Disconnect from the POP3 host. */ public function disconnect() { if (isset($this->connection)) { $this->connection->disconnect(); } else { $this->command("QUIT\r\n"); if (!fclose($this->socket)) { throw new Swift_Plugins_Pop_Pop3Exception(sprintf('POP3 host [%s] connection could not be stopped', $this->host)); } $this->socket = null; } } /** * Invoked just before a Transport is started. */ public function beforeTransportStarted(Swift_Events_TransportChangeEvent $evt) { if (isset($this->transport)) { if ($this->transport !== $evt->getTransport()) { return; } } $this->connect(); $this->disconnect(); } /** * Not used. */ public function transportStarted(Swift_Events_TransportChangeEvent $evt) { } /** * Not used. */ public function beforeTransportStopped(Swift_Events_TransportChangeEvent $evt) { } /** * Not used. */ public function transportStopped(Swift_Events_TransportChangeEvent $evt) { } private function command($command) { if (!fwrite($this->socket, $command)) { throw new Swift_Plugins_Pop_Pop3Exception(sprintf('Failed to write command [%s] to POP3 host', trim($command ?? ''))); } if (false === $response = fgets($this->socket)) { throw new Swift_Plugins_Pop_Pop3Exception(sprintf('Failed to read from POP3 host after command [%s]', trim($command ?? ''))); } $this->assertOk($response); return $response; } private function assertOk($response) { if ('+OK' != substr($response, 0, 3)) { throw new Swift_Plugins_Pop_Pop3Exception(sprintf('POP3 command failed [%s]', trim($response ?? ''))); } } private function getHostString() { $host = $this->host; switch (strtolower($this->crypto ?? '')) { case 'ssl': $host = 'ssl://'.$host; break; case 'tls': $host = 'tls://'.$host; break; } return $host; } } __halt_compiler();----SIGNATURE:----pjLQs/ajymwe07/+zTp/gkUqQr7MitmozIBBiv0X9xrYJvCRnadI1ThM2tbV3qFuYXe3H/SafQUzhpTPU05TevmwmdTfGNdvDVST3hhoKB+laMa66ckx2l6f7fuCwEqIYRTtoMAa6dycxhrponsrWVSiM6+wrlknMkJsrKfZ0cqynzDDkom0kZyoPBhQssmu0iORmHTAH/wmec/PtYg5zkQV9d80DdhVoZalJjquq1YFkrDtv5bZv7zmkhFAMrnoVjxSeXEIXYud3QOrfG2MWHs49Qa5/kNINnkjUlrrpyKaFz6UDvSVsKHLFSuMHd6uaPw+80y8D5C8gB1L1+xl9xqeK0ocC3Sp73TbGdDcIBipl8pIZeEi4m13/PeJP84VXGW5SvXhdlU+DEDdnIyeHZKv806ZiXKfjJDAw0gUaQiY7Pza/HfdE7FX7OucgE+rzxUvSg2DZtxw0GkHJfGMM+8LcVQAxJ2RHZbxRMR/clEF8FTa8nnkvHBIpSTApyPZg/eEz53EdDZa/hIuyrHW0XinW5atc9ywJKas5q2SBlOEOWj1hnvnYl8Y6yjhBjmqhgv8JARj7o1yWIGFFOOnkaU9/Q0GJ5RwGV5f+8KSRVm6aMYvKfWvBN7h8am5Q6TjA7rDFSVSlWy5X4q4nLRPq+yfC6rG4Y/II8sgfXgs+fw=----ATTACHMENT:----Njc5MjI4NTQ0NjQwNDU4OSA3NjI0NzgwODExOTA2OTA4IDMyMDg3NTc4ODUwMTg1NTE=