public static function setUpBeforeClass() { if (false === \getenv('EMAIL_USER')) { throw new \PHPUnit_Framework_SkippedTestError('Please set environment variable EMAIL_USER before running functional tests'); } if (false === \getenv('EMAIL_PASSWORD')) { throw new \PHPUnit_Framework_SkippedTestError('Please set environment variable EMAIL_PASSWORD before running functional tests'); } $user = \getenv('EMAIL_USER'); $password = \getenv('EMAIL_PASSWORD'); $password = \OC::$server->getCrypto()->encrypt($password); $a = new MailAccount(); $a->setId(-1); $a->setName('ownCloudMail'); $a->setInboundHost('imap.gmail.com'); $a->setInboundPort(993); $a->setInboundUser($user); $a->setInboundPassword($password); $a->setInboundSslMode('ssl'); $a->setEmail($user); $a->setOutboundHost('smtp.gmail.com'); $a->setOutboundPort(465); $a->setOutboundUser($user); $a->setOutboundPassword($password); $a->setOutboundSslMode('ssl'); self::$account = new Account($a); self::$account->getImapConnection(); }
/** * Initialize Mapper */ public function setup() { $db = \OC::$server->getDatabaseConnection(); $this->db = new Db($db); $this->mapper = new MailAccountMapper($this->db); $this->account = new MailAccount(); $this->account->setName('Peter Parker'); $this->account->setInboundHost('mail.marvel.com'); $this->account->setInboundPort(159); $this->account->setInboundUser('spiderman'); $this->account->setInboundPassword('xxxxxxxx'); $this->account->setInboundSslMode('tls'); $this->account->setEmail('*****@*****.**'); $this->account->setOutboundHost('smtp.marvel.com'); $this->account->setOutboundPort(458); $this->account->setOutboundUser('spiderman'); $this->account->setOutboundPassword('xxxx'); $this->account->setOutboundSslMode('ssl'); $this->account->setUserId('user12345'); }
/** * @param MailAccount $account * @param $host * @param $users * @param $password * @param bool $withHostPrefix * @return bool */ public function test(MailAccount $account, $host, $users, $password, $withHostPrefix = false) { if (!is_array($users)) { $users = [$users]; } // port 25 should be the last one to test $ports = [587, 465, 25]; $protocols = ['ssl', 'tls', null]; $hostPrefixes = ['']; if ($withHostPrefix) { $hostPrefixes = ['', 'imap.']; } foreach ($hostPrefixes as $hostPrefix) { $url = $hostPrefix . $host; if (gethostbyname($url) === $url) { continue; } foreach ($ports as $port) { if (!$this->canConnect($url, $port)) { continue; } foreach ($protocols as $protocol) { foreach ($users as $user) { try { $account->setOutboundHost($url); $account->setOutboundPort($port); $account->setOutboundUser($user); $password = $this->crypto->encrypt($password); $account->setOutboundPassword($password); $account->setOutboundSslMode($protocol); $a = new Account($account); $smtp = $a->createTransport(); $smtp->getSMTPObject(); $this->logger->info("Test-Account-Successful: {$this->userId}, {$url}, {$port}, {$user}, {$protocol}"); return true; } catch (\Exception $e) { $error = $e->getMessage(); $this->logger->info("Test-Account-Failed: {$this->userId}, {$url}, {$port}, {$user}, {$protocol} -> {$error}"); } } } } } return false; }