Example #1
0
 function send()
 {
     //第一步: 设置相关的headers
     //1.设置邮件的Content-Type,要不然网站的消息内容里面的html标签会被当做纯文本处理
     $smtpHeaderContentType = new SmtpHeaderContentType();
     $smtpHeaderContentType->setType('text/html');
     //2.设置编码集并添加Content-Type
     $headers = new SmtpHeaders();
     $headers->setEncoding('utf-8');
     $headers->addHeader($smtpHeaderContentType);
     //第二步:设置消息的相关
     $message = new SmtpMessage();
     $message->setHeaders($headers);
     $message->addTo($this->mailTo)->addFrom($this->mailFrom)->setSubject($this->subject)->setBody($this->body);
     //邮件的内容
     //第三步:设置Smtp的相关链接参数
     $smtpOptions = new SmtpOptions();
     $smtpOptions->setHost($this->host)->setPort($this->port)->setConnectionClass('login')->setConnectionConfig(array('username' => $this->username, 'password' => $this->password, 'ssl' => 'ssl'));
     //第四步:加载配置,发送消息
     $smtpTransport = new SmtpTransport();
     $smtpTransport->setOptions($smtpOptions);
     //加载配置
     $smtpTransport->send($message);
     //发送消息
 }
 /**
  * Retrieves Message Reference
  *
  * @param \Zend\Mail\Headers $headers
  * @return string|null
  */
 protected function processMessageReference($headers)
 {
     $messageReference = null;
     if ($headers->get('references')) {
         preg_match('/<([^<]+)>/', $headers->get('references')->getFieldValue(), $matches);
         $messageReference = $matches[1];
     }
     return $messageReference;
 }
Example #3
0
 public function testSendMinimalMail()
 {
     $headers = new Headers();
     $headers->addHeaderLine('Date', 'Sun, 10 Jun 2012 20:07:24 +0200');
     $message = new Message();
     $message->setHeaders($headers)->setSender('*****@*****.**', 'Ralph Schindler')->setBody('testSendMailWithoutMinimalHeaders')->addTo('*****@*****.**', 'ZF DevTeam');
     $expectedMessage = "RSET\r\n" . "MAIL FROM:<*****@*****.**>\r\n" . "DATA\r\n" . "Date: Sun, 10 Jun 2012 20:07:24 +0200\r\n" . "Sender: Ralph Schindler <*****@*****.**>\r\n" . "To: ZF DevTeam <*****@*****.**>\r\n" . "\r\n" . "testSendMailWithoutMinimalHeaders\r\n" . ".\r\n";
     $this->transport->send($message);
     $this->assertEquals($expectedMessage, $this->connection->getLog());
 }
Example #4
0
 public function testSendEscapedEmail()
 {
     $headers = new Headers();
     $headers->addHeaderLine('Date', 'Sun, 10 Jun 2012 20:07:24 +0200');
     $message = new Message();
     $message->setHeaders($headers)->setSender('*****@*****.**', 'Ralph Schindler')->setBody("This is a test\n.")->addTo('*****@*****.**', 'ZF DevTeam');
     $expectedMessage = "EHLO localhost\r\n" . "MAIL FROM:<*****@*****.**>\r\n" . "DATA\r\n" . "Date: Sun, 10 Jun 2012 20:07:24 +0200\r\n" . "Sender: Ralph Schindler <*****@*****.**>\r\n" . "To: ZF DevTeam <*****@*****.**>\r\n" . "\r\n" . "This is a test\r\n" . "..\r\n" . ".\r\n";
     $this->transport->send($message);
     $this->assertEquals($expectedMessage, $this->connection->getLog());
 }
 private function headers()
 {
     $headers = new Headers();
     $messageId = new MessageId();
     $messageId->setId('testId');
     $headers->addHeader($messageId);
     $addressList = new AddressList();
     $addressList->add('*****@*****.**');
     $from = new From();
     $from->setAddressList($addressList);
     $headers->addHeader($from);
     $to = new To();
     $to->setAddressList($addressList);
     $headers->addHeader($to);
     return $headers;
 }
Example #6
0
 /**
  * Access headers collection
  *
  * Lazy-loads if not already attached.
  * 
  * @return Headers
  */
 public function headers()
 {
     if (null === $this->headers) {
         $this->setHeaders(new Headers());
         $this->headers->addHeaderLine('Date', date('r'));
     }
     return $this->headers;
 }
Example #7
0
 /**
  * Access headers collection
  *
  * Lazy-loads if not already attached.
  *
  * @return Headers
  */
 public function getHeaders()
 {
     if (null === $this->headers) {
         $this->setHeaders(new Headers());
         $date = Header\Date::fromString('Date: ' . date('r'));
         $this->headers->addHeader($date);
     }
     return $this->headers;
 }
Example #8
0
 /**
  * Merge duplicate header fields into single headers field.
  * The headers must be AbstractAddressList.
  *
  * @param Headers $headerBag
  * @param HeaderInterface|AbstractAddressList[] $headers
  */
 private function mergeDuplicateHeader(Headers $headerBag, $headers)
 {
     if ($headers instanceof HeaderInterface) {
         // all good
         return;
     }
     // use first headers as base and collect addresses there
     $header = $headers[0];
     unset($headers[0]);
     if (!$header instanceof AbstractAddressList) {
         throw new DomainException(sprintf('Cannot grab address list from headers of type "%s"; not an AbstractAddressList implementation', get_class($header)));
     }
     $addressList = $header->getAddressList();
     foreach ($headers as $h) {
         $addressList->merge($h->getAddressList());
     }
     $headerBag->removeHeader($header->getFieldName());
     $headerBag->addHeader($header);
 }
Example #9
0
 /**
  * Sets additional message headers
  *
  * @param \Zend\Mail\Headers $headers
  * @param array $data
  */
 protected function setExtHeaders(&$headers, array $data)
 {
     $headers->addHeaderLine(self::UID, $data[self::UID]);
     $headers->addHeaderLine('InternalDate', $data[self::INTERNALDATE]);
 }
Example #10
0
 /**
  * Access headers collection
  *
  * Lazy-loads if not already attached.
  *
  * @return Headers
  */
 public function getHeaders()
 {
     if (null === $this->headers) {
         if ($this->mail) {
             $part = $this->mail->getRawHeader($this->messageNum);
             $this->headers = Headers::fromString($part);
         } else {
             $this->headers = new Headers();
         }
     }
     return $this->headers;
 }
Example #11
0
 /**
  * @dataProvider getEmbeddedContentIdProvider
  * @param $rawHeaders
  * @param $expected
  */
 public function testGetEmbeddedContentId($rawHeaders, $expected)
 {
     $headers = Headers::fromString(implode(PHP_EOL, $rawHeaders), PHP_EOL);
     $contentIdHeader = null;
     $contentDispositionHeader = null;
     if (isset($rawHeaders['Content-ID'])) {
         $contentIdHeader = GenericHeader::fromString($rawHeaders['Content-ID']);
     }
     if (isset($rawHeaders['Content-Disposition'])) {
         $contentDispositionHeader = GenericHeader::fromString($rawHeaders['Content-Disposition']);
     }
     $this->part->expects($this->any())->method('getHeader')->willReturnMap([['Content-ID', null, $contentIdHeader], ['Content-Disposition', null, $contentDispositionHeader]]);
     $this->part->expects($this->any())->method('getHeaders')->willReturn($headers);
     $this->assertEquals($expected, $this->attachment->getEmbeddedContentId());
 }
Example #12
0
 /**
  * Public constructor
  *
  * This handler supports the following params:
  * - file     filename or open file handler with message content (required)
  * - startPos start position of message or part in file (default: current position)
  * - endPos   end position of message or part in file (default: end of file)
  *
  * @param   array $params  full message with or without headers
  * @throws Exception\RuntimeException
  * @throws Exception\InvalidArgumentException
  */
 public function __construct(array $params)
 {
     if (empty($params['file'])) {
         throw new Exception\InvalidArgumentException('no file given in params');
     }
     if (!is_resource($params['file'])) {
         $this->_fh = fopen($params['file'], 'r');
     } else {
         $this->_fh = $params['file'];
     }
     if (!$this->_fh) {
         throw new Exception\RuntimeException('could not open file');
     }
     if (isset($params['startPos'])) {
         fseek($this->_fh, $params['startPos']);
     }
     $header = '';
     $endPos = isset($params['endPos']) ? $params['endPos'] : null;
     while (($endPos === null || ftell($this->_fh) < $endPos) && trim($line = fgets($this->_fh))) {
         $header .= $line;
     }
     $this->_headers = Headers::fromString($header);
     $this->_contentPos[0] = ftell($this->_fh);
     if ($endPos !== null) {
         $this->_contentPos[1] = $endPos;
     } else {
         fseek($this->_fh, 0, SEEK_END);
         $this->_contentPos[1] = ftell($this->_fh);
     }
     if (!$this->isMultipart()) {
         return;
     }
     $boundary = $this->getHeaderField('content-type', 'boundary');
     if (!$boundary) {
         throw new Exception\RuntimeException('no boundary found in content type to split message');
     }
     $part = array();
     $pos = $this->_contentPos[0];
     fseek($this->_fh, $pos);
     while (!feof($this->_fh) && ($endPos === null || $pos < $endPos)) {
         $line = fgets($this->_fh);
         if ($line === false) {
             if (feof($this->_fh)) {
                 break;
             }
             throw new Exception\RuntimeException('error reading file');
         }
         $lastPos = $pos;
         $pos = ftell($this->_fh);
         $line = trim($line);
         if ($line == '--' . $boundary) {
             if ($part) {
                 // not first part
                 $part[1] = $lastPos;
                 $this->_partPos[] = $part;
             }
             $part = array($pos);
         } else {
             if ($line == '--' . $boundary . '--') {
                 $part[1] = $lastPos;
                 $this->_partPos[] = $part;
                 break;
             }
         }
     }
     $this->_countParts = count($this->_partPos);
 }
Example #13
0
 /**
  * Prepare header string from message
  * 
  * @param  Message $message 
  * @return string
  */
 protected function prepareHeaders(Message $message)
 {
     $headers = new Headers();
     foreach ($message->headers() as $header) {
         if ('Bcc' == $header->getFieldName()) {
             continue;
         }
         $headers->addHeader($header);
     }
     return $headers->toString();
 }
Example #14
0
 /**
  * Gets an email importance
  *
  * @param Headers $headers
  *
  * @return integer
  */
 protected function getImportance(Headers $headers)
 {
     $importance = $headers->get('Importance');
     if ($importance instanceof HeaderInterface) {
         switch (strtolower($importance->getFieldValue())) {
             case 'high':
                 return 1;
             case 'low':
                 return -1;
             default:
                 return 0;
         }
     }
     $labels = $headers->get('X-GM-LABELS');
     if ($labels instanceof HeaderInterface) {
         if ($labels->getFieldValue() === '\\\\Important') {
             return 1;
         }
     } elseif ($labels instanceof \ArrayIterator) {
         foreach ($labels as $label) {
             if ($label instanceof HeaderInterface && $label->getFieldValue() === '\\\\Important') {
                 return 1;
             }
         }
     }
     return 0;
 }
Example #15
0
 /**
  * Compose headers
  *
  * @param   \Zend\Mail\Headers  $headers
  * @return  \Zork\Mail\Message
  */
 public function setHeaders(Headers $headers)
 {
     $headers->addHeaderLine('User-Agent', static::USER_AGENT)->addHeaderLine('X-Mailer', static::USER_AGENT);
     return parent::setHeaders($headers);
 }
Example #16
0
 public function mailAdd($version, $id, $srcNodeId, $srcUserNickname, $dstNodeId, $subject, $text, $checksum, $relayCount, $encryptionMode, $status, $timeCreated, $timeReceived)
 {
     $this->log->info('mail add: ' . $id);
     $this->log->info('subject: ' . $subject);
     $this->log->info('from: ' . $srcNodeId);
     $this->log->info('nick: ' . $srcUserNickname);
     $headers = new ZendMailHeaders();
     $headers->addHeaderLine('Date', date('r', $timeReceived));
     $headers->addHeaderLine('X-Version', $version);
     $headers->addHeaderLine('X-Id', $id);
     $headers->addHeaderLine('X-Checksum', $checksum);
     $headers->addHeaderLine('X-RelayCount', $relayCount);
     $headers->addHeaderLine('X-EncrptionMode', $encryptionMode);
     $headers->addHeaderLine('X-Status', $status);
     $headers->addHeaderLine('X-TimeCreated', $timeCreated);
     $headers->addHeaderLine('X-TimeReceived', $timeReceived);
     $message = new ZendMailMessage();
     $message->setHeaders($headers);
     $message->addFrom($srcNodeId . '@phpchat.fox21.at', $srcUserNickname);
     $message->addTo($dstNodeId . '@phpchat.fox21.at');
     $message->setSubject($subject);
     $message->setBody($text);
     $this->server->addMail($message);
 }
Example #17
0
 /**
  * @dataProvider expectedHeaders
  */
 public function testDefaultPluginLoaderIsSeededWithHeaders($plugin, $class)
 {
     $headers = new Headers();
     $loader = $headers->getPluginClassLoader();
     $test = $loader->load($plugin);
     $this->assertEquals($class, $test);
 }
Example #18
0
 /**
  * split a message in header and body part, if no header or an
  * invalid header is found $headers is empty
  *
  * The charset of the returned headers depend on your iconv settings.
  *
  * @param  string|Headers  $message raw message with header and optional content
  * @param  Headers         $headers output param, headers container
  * @param  string          $body    output param, content of message
  * @param  string          $EOL EOL string; defaults to {@link Zend\Mime\Mime::LINEEND}
  * @param  bool         $strict  enable strict mode for parsing message
  * @return null
  */
 public static function splitMessage($message, &$headers, &$body, $EOL = Mime::LINEEND, $strict = false)
 {
     if ($message instanceof Headers) {
         $message = $message->toString();
     }
     // check for valid header at first line
     $firstlinePos = strpos($message, "\n");
     $firstline = $firstlinePos === false ? $message : substr($message, 0, $firstlinePos);
     if (!preg_match('%^[^\\s]+[^:]*:%', $firstline)) {
         $headers = [];
         // TODO: we're ignoring \r for now - is this function fast enough and is it safe to assume noone needs \r?
         $body = str_replace(["\r", "\n"], ['', $EOL], $message);
         return;
     }
     // see @ZF2-372, pops the first line off a message if it doesn't contain a header
     if (!$strict) {
         $parts = explode(':', $firstline, 2);
         if (count($parts) != 2) {
             $message = substr($message, strpos($message, $EOL) + 1);
         }
     }
     // find an empty line between headers and body
     // default is set new line
     if (strpos($message, $EOL . $EOL)) {
         list($headers, $body) = explode($EOL . $EOL, $message, 2);
         // next is the standard new line
     } elseif ($EOL != "\r\n" && strpos($message, "\r\n\r\n")) {
         list($headers, $body) = explode("\r\n\r\n", $message, 2);
         // next is the other "standard" new line
     } elseif ($EOL != "\n" && strpos($message, "\n\n")) {
         list($headers, $body) = explode("\n\n", $message, 2);
         // at last resort find anything that looks like a new line
     } else {
         ErrorHandler::start(E_NOTICE | E_WARNING);
         list($headers, $body) = preg_split("%([\r\n]+)\\1%U", $message, 2);
         ErrorHandler::stop();
     }
     $headers = Headers::fromString($headers, $EOL);
 }
Example #19
0
 /**
  * split a message in header and body part, if no header or an
  * invalid header is found $headers is empty
  *
  * The charset of the returned headers depend on your iconv settings.
  *
  * @param  string|Headers  $message raw message with header and optional content
  * @param  Headers         $headers output param, headers container
  * @param  string          $body    output param, content of message
  * @param  string          $EOL EOL string; defaults to {@link Zend_Mime::LINEEND}
  * @return null
  */
 public static function splitMessage($message, &$headers, &$body, $EOL = Mime::LINEEND)
 {
     if ($message instanceof Headers) {
         $message = $message->toString();
     }
     // check for valid header at first line
     $firstline = strtok($message, "\n");
     if (!preg_match('%^[^\\s]+[^:]*:%', $firstline)) {
         $headers = array();
         // TODO: we're ignoring \r for now - is this function fast enough and is it safe to asume noone needs \r?
         $body = str_replace(array("\r", "\n"), array('', $EOL), $message);
         return;
     }
     // find an empty line between headers and body
     // default is set new line
     if (strpos($message, $EOL . $EOL)) {
         list($headers, $body) = explode($EOL . $EOL, $message, 2);
         // next is the standard new line
     } else {
         if ($EOL != "\r\n" && strpos($message, "\r\n\r\n")) {
             list($headers, $body) = explode("\r\n\r\n", $message, 2);
             // next is the other "standard" new line
         } else {
             if ($EOL != "\n" && strpos($message, "\n\n")) {
                 list($headers, $body) = explode("\n\n", $message, 2);
                 // at last resort find anything that looks like a new line
             } else {
                 @(list($headers, $body) = @preg_split("%([\r\n]+)\\1%U", $message, 2));
             }
         }
     }
     $headers = Headers::fromString($headers, $EOL);
 }
Example #20
0
 /**
  * Prepare the textual representation of headers
  * 
  * @param  Message $message
  * @return string
  */
 protected function prepareHeaders(Message $message)
 {
     $headers = $message->headers();
     // On Windows, simply return verbatim
     if ($this->isWindowsOs()) {
         return $headers->toString();
     }
     // On *nix platforms, strip the "to" header
     $headersToSend = new Headers();
     foreach ($headers as $header) {
         if ('To' == $header->getFieldName()) {
             continue;
         }
         $headersToSend->addHeader($header);
     }
     return $headersToSend->toString();
 }
 /**
  * Retrieves Message Subject
  *
  * @param \Zend\Mail\Headers $headers
  * @return string|null
  */
 private function processSubject($headers)
 {
     $messageSubject = $headers->get('subject') ? $headers->get('subject')->getFieldValue() : null;
     return $messageSubject;
 }
Example #22
0
 /**
  * @group medium
  */
 public function testMsgHandleUidSearch()
 {
     $path1 = './test_data/test_mailbox_' . date('Ymd_His') . '_' . uniqid('', true);
     $log = new Logger('test_application');
     #$log->pushHandler(new StreamHandler('php://stdout', Logger::DEBUG));
     $server = new Server('', 0);
     $server->setLog($log);
     $server->init();
     $storage1 = new DirectoryStorage();
     $storage1->setPath($path1);
     $server->addStorage($storage1);
     $client = new Client();
     $client->setServer($server);
     $client->setId(1);
     $msg = $client->msgHandle('17 uid search');
     $this->assertEquals('17 NO uid failure' . Client::MSG_SEPARATOR, $msg);
     $client->setStatus('hasAuth', true);
     $msg = $client->msgHandle('17 uid search');
     $this->assertEquals('17 NO No mailbox selected.' . Client::MSG_SEPARATOR, $msg);
     $client->msgHandle('6 select INBOX');
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 1');
     $message->setBody('my_body');
     $server->addMail($message, null, null, false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 2');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_ANSWERED), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->addBcc('*****@*****.**');
     $message->setSubject('my_subject 3');
     $message->setBody('my_body');
     $server->addMail($message, null, null, false);
     $headers = new Headers();
     $headers->addHeader(Date::fromString('Date: ' . date('r', mktime(0, 0, 0, 2, 21, 1987))));
     $message = new Message();
     $message->setHeaders($headers);
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 4');
     $message->setBody('my_body');
     $server->addMail($message, null, null, false);
     $message = new Message();
     $message->setHeaders($headers);
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 5');
     $message->setBody('my_body');
     $server->addMail($message, null, null, false);
     $headers = new Headers();
     $headers->addHeader(Date::fromString('Date: ' . date('r', mktime(0, 0, 0, 11, 20, 1986))));
     $message = new Message();
     $message->setHeaders($headers);
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 6');
     $message->setBody('hello world');
     $server->addMail($message, null, null, false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 7');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_DELETED), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 8');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_DRAFT), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 9');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_FLAGGED), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 10');
     $message->setBody('my_body');
     $server->addMail($message, null, null, false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 11');
     $message->setBody('my super fancy long body for testing the size');
     $server->addMail($message, null, null, false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 12');
     $message->setBody('my_body');
     $server->addMail($message, null, array(), true);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 13');
     $message->setBody('my_body');
     $server->addMail($message, null, array(), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     #$message->setSubject('my_subject 14');
     $message->setBody('my_body');
     $server->addMail($message, null, array(), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 15');
     $message->setBody('this is a test body');
     $server->addMail($message, null, array(), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 16');
     #$message->setBody('my_body');
     $server->addMail($message, null, array(), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 17');
     $message->setBody('my_body');
     $server->addMail($message, null, array(), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 18');
     $message->setBody('my_body');
     $server->addMail($message, null, array(), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 19');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_ANSWERED), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 20');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_DELETED), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->setSubject('my_subject 21');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_DRAFT), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->addCc('*****@*****.**');
     $message->setSubject('my_subject 22');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_FLAGGED), false);
     $message = new Message();
     $message->addFrom('*****@*****.**');
     $message->addTo('*****@*****.**');
     $message->addCc('*****@*****.**');
     $message->setSubject('my_subject 23');
     $message->setBody('my_body');
     $server->addMail($message, null, array(Storage::FLAG_SEEN), false);
     $msg = $client->msgHandle('17 uid SEARCH');
     $expect = '17 BAD Arguments invalid.' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH ALL');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100009 100010 ';
     $expect .= '100011 100012 100013 100014 100015 100016 100017 100018 100019 100020 100021 ';
     $expect .= '100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH ANSWERED');
     $expect = '* SEARCH 100002 100019' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH BCC apple');
     $expect = '* SEARCH 100003' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     #$msg = $client->msgHandle('17 uid SEARCH BEFORE 1990');
     $expect = '* SEARCH 100004 100005' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     #$this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH BODY world');
     $expect = '* SEARCH 100006' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH CC dev3');
     $expect = '* SEARCH 100022 100023' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH DELETED');
     $expect = '* SEARCH 100007 100020' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH DRAFT');
     $expect = '* SEARCH 100008 100021' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH FLAGGED');
     $expect = '* SEARCH 100009 100022' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH FROM test@');
     $expect = '* SEARCH 100010' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH HEADER Date 1987');
     $expect = '* SEARCH 100004 100005' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH HEADER TO fox21');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100009 100010 100011 100012 ';
     $expect .= '100013 100014 100015 100016 100018 100019 100020 100021 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH LARGER 40');
     $expect = '* SEARCH 100011' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH NEW');
     $expect = '* SEARCH 100012' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH OLD');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100009 100010 100011 100013';
     $expect .= ' 100014 100015 100016 100017 100018 100019 100020 100021 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH ON 1987-02-21');
     $expect = '* SEARCH 100004 100005' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH OR 5 6');
     $expect = '* SEARCH 100005 100006' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH OR OR 5 6 7');
     $expect = '* SEARCH 100005 100006 100007' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH RECENT');
     $expect = '* SEARCH 100012' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH SEEN');
     $expect = '* SEARCH 100001 100003 100004 100005 100006 100010 100011 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH SENTBEFORE 1990-01-01');
     $expect = '* SEARCH 100004 100005 100006' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH SENTON 1987-02-21');
     $expect = '* SEARCH 100004 100005' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH SENTSINCE 1987-02-21');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100007 100008 100009 100010 100011 100012 100013';
     $expect .= ' 100014 100015 100016 100017 100018 100019 100020 100021 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH SMALLER 30');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100009 100010 100012 100013';
     $expect .= ' 100014 100015 100016 100017 100018 100019 100020 100021 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH SUBJECT "t 13"');
     $expect = '* SEARCH 100013' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH TEXT test');
     $expect = '* SEARCH 100011 100015' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH TO steve');
     $expect = '* SEARCH 100017' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH UID 100018');
     $expect = '* SEARCH 100018' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH UNANSWERED');
     $expect = '* SEARCH 100001 100003 100004 100005 100006 100007 100008 100009 100010 100011 100012 100013';
     $expect .= ' 100014 100015 100016 100017 100018 100020 100021 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH UNDELETED');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100008 100009 100010 100011 100012 100013';
     $expect .= ' 100014 100015 100016 100017 100018 100019 100021 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH UNDRAFT');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100009 100010 100011 100012 100013';
     $expect .= ' 100014 100015 100016 100017 100018 100019 100020 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH UNFLAGGED');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100010 100011 100012 100013';
     $expect .= ' 100014 100015 100016 100017 100018 100019 100020 100021 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     #$msg = $client->msgHandle('17 uid SEARCH UNKEYWORD');
     $expect = '* SEARCH 123' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     #$this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH UNSEEN');
     $expect = '* SEARCH 100002 100007 100008 100009 100012 100013 100014 100015 100016 100017 100018';
     $expect .= ' 100019 100020 100021 100022' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH OR CC dev3 TO steve');
     $expect = '* SEARCH 100017 100022 100023';
     $expect .= '' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH OR CC dev3 NOT CC dev2');
     $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100009 100010 100011';
     $expect .= ' 100012 100013 100014 100015 100016 100017';
     $expect .= ' 100018 100019 100020 100021 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH CC dev3 AND TO dev2');
     $expect = '';
     $expect .= '* SEARCH 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH CC dev3 AND OR FROM dev1 TO dev2');
     $expect = '';
     $expect .= '* SEARCH 100022 100023' . Client::MSG_SEPARATOR;
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH CC dev3 AND AND FROM dev1 NOT TO dev2');
     $expect = '';
     $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR;
     $this->assertEquals($expect, $msg);
     $msg = $client->msgHandle('17 uid SEARCH BEFORE 1985');
     $this->assertEquals('17 OK UID SEARCH completed' . Client::MSG_SEPARATOR, $msg);
     $msg = $client->msgHandle('17 uid SEARCH BODY xyz');
     $this->assertEquals('17 OK UID SEARCH completed' . Client::MSG_SEPARATOR, $msg);
     #$msg = $client->msgHandle('17 uid SEARCH OR (UNDELETED FROM "thefox") ANSWERED AND FROM "21"');
     #$msg = $client->msgHandle('17 uid SEARCH UNDELETED HEADER From @fox21.at HEADER Date 2014');
     #$msg = $client->msgHandle('17 uid SEARCH NOT 5');
     #$msg = $client->msgHandle('17 uid SEARCH NOT UID 100005');
     #$this->assertEquals('x17 OK UID SEARCH completed'.Client::MSG_SEPARATOR, $msg);
     #$msg = $client->msgHandle('17 uid SEARCH NOT UID 100021');
     $server->shutdown();
     $filesystem = new Filesystem();
     $filesystem->remove($path1);
 }
Example #23
0
 public function testCastingToStringReturnsAllMultiHeaderValues()
 {
     $headers = new Headers();
     $received1 = Header\Received::fromString("Received: from framework (localhost [127.0.0.1])\r\nby framework (Postfix) with ESMTP id BBBBBBBBBBB\r\nfor <zend@framework>; Mon, 21 Nov 2011 12:50:27 -0600 (CST)");
     $received2 = Header\Received::fromString("Received: from framework (localhost [127.0.0.1])\r\nby framework (Postfix) with ESMTP id AAAAAAAAAAA\r\nfor <zend@framework>; Mon, 21 Nov 2011 12:50:29 -0600 (CST)");
     $headers->addHeader($received1);
     $headers->addHeader($received2);
     $string = $headers->toString();
     $expected = array('Received: ' . $received1->getFieldValue(), 'Received: ' . $received2->getFieldValue());
     $expected = implode("\r\n", $expected) . "\r\n";
     $this->assertEquals($expected, $string);
 }
Example #24
0
 public function testClone()
 {
     $headers = new Mail\Headers();
     $headers->addHeader(new Header\Bcc());
     $headers2 = clone $headers;
     $this->assertEquals($headers, $headers2);
     $headers2->removeHeader('Bcc');
     $this->assertTrue($headers->has('Bcc'));
     $this->assertFalse($headers2->has('Bcc'));
 }
 private function headers()
 {
     $headers = new Headers();
     $messageId = new MessageId();
     $messageId->setId('testId');
     $headers->addHeader($messageId);
     $addressList = new AddressList();
     $addressList->add('*****@*****.**', 'Dummy Name');
     $from = new From();
     $from->setAddressList($addressList);
     $headers->addHeader($from);
     $to = new To();
     $to->setAddressList($addressList);
     $headers->addHeader($to);
     //@todo fix this;
     $contentTransferEncoding = new GenericHeader("Content-Transfer-Encoding", "7bit");
     $headers->addHeader($contentTransferEncoding);
     return $headers;
 }