Ejemplo n.º 1
0
 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();
 }
Ejemplo n.º 2
0
 /**
  * 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');
 }
Ejemplo n.º 3
0
 /**
  * @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;
 }