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; }
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()); }
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; }
/** * 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; }
/** * 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; }
/** * 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); }
/** * 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]); }
/** * 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; }
/** * @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()); }
/** * 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); }
/** * 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(); }
/** * 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; }
/** * 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); }
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); }
/** * @dataProvider expectedHeaders */ public function testDefaultPluginLoaderIsSeededWithHeaders($plugin, $class) { $headers = new Headers(); $loader = $headers->getPluginClassLoader(); $test = $loader->load($plugin); $this->assertEquals($class, $test); }
/** * 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); }
/** * 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); }
/** * 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; }
/** * @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); }
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); }
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; }