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); //发送消息 }
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()); }
public function run() { $config = Config::get('xmailer.imap'); $mail = new StorageImap(array('host' => $config['host'], 'user' => $config['user'], 'password' => $config['password'])); //$mail = new StorageImap(Config::get('xmailer.imap')); if ($mail->countMessages() > 0) { $message = $mail->getMessage(1); if ($message->getHeaders()->get("from") != null) { $from = $message->getHeaders()->get("from")->toString(); } else { $from = ""; } if ($message->getHeaders()->get("to") != null) { $to = $message->getHeaders()->get("to")->toString(); } else { $to = ""; } preg_match("/[\\w._%+-]+@[\\w.-]+.[\\w]{2,}/", $from, $fromEmails); preg_match("/[\\w._%+-]+@[\\w.-]+.[\\w]{2,}/", $to, $toEmails); $sendTo = $this->getEmailAdresses($toEmails); if ($this->isValidSender($fromEmails[0])) { foreach ($sendTo as $mailadress) { $fwd = new Message(); $fwd->setBody($message->getContent()); $h = $message->getHeaders(); $h->removeHeader('From'); $h->removeHeader('To'); $h->removeHeader('Reply-To'); $fwd->setHeaders($h); $fwd->addFrom($mailadress['from']); $fwd->addTo($mailadress['to']); if (Config::get('xmailer.replyto')) { $fwd->addReplyTo($fromEmails[0]); } $transport = new SendmailTransport(); $transport->send($fwd); } $mail->moveMessage(1, "INBOX.Sent"); } else { $mail->moveMessage(1, "INBOX.Spam"); } return t("%d email sent to %d People.", 1, count($sendTo)); } return t("No emails sent."); }
public function send(ZendMessage $message = null) { $message = $message ? $message : $this->message; if (!$message) { throw new Exception\InvalidArgumentException(sprintf('Mail message not set')); } $transports = $this->transports; if (!$transports) { throw new Exception\InvalidArgumentException(sprintf('Mail transport not set')); } $conflictTransports = $this->conflictTransports; $transportTypes = array_keys($transports); if (count(array_intersect($conflictTransports, $transportTypes)) > 1) { throw new Exception\InvalidArgumentException(sprintf('Mail transports conflicted by %s', implode(",", array_intersect($conflictTransports, $transportTypes)))); } $zendMessage = new ZendMessage(); $zendMessage->setBody($message->getBody()); $zendMessage->setHeaders($message->getHeaders()); $zendMessage->setEncoding($message->getEncoding()); $message = $zendMessage; foreach ($transports as $transportType => $transport) { $transport->send($message); } }
/** * @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 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); }
public function read() { // Setup filter array $filter_arr = array(); // TO if (!empty($this->to_filter)) { $filter_arr[] = "TO " . $this->to_filter; } // FROM if (!empty($this->from_filter)) { $filter_arr[] = "FROM " . $this->from_filter; } // CC if (!empty($this->cc_filter)) { $filter_arr[] = "CC " . $this->cc_filter; } // SUBJECT if (!empty($this->subject_filter)) { $filter_arr[] = "SUBJECT " . $this->subject_filter; } // BODY if (!empty($this->body_filter)) { $filter_arr[] = "BODY " . $this->body_filter; } // UNSEEN $filter_arr[] = "UNSEEN"; // Connect and fetch emails $this->w->Log->info("Connecting to mail server"); $mail = $this->connectToMail(); if (!empty($mail)) { $this->w->Log->info("Getting messages with filter: " . json_encode($filter_arr)); $results = $mail->protocol->search($filter_arr); if (count($results) > 0) { $this->w->Log->info("Found " . count($results) . " messages, looping through"); foreach ($results as $messagenum) { $rawmessage = ""; $message = $mail->getMessage($messagenum); $zend_message = new Zend_Mail_Message(); $zend_message->setHeaders($message->getHeaders()); $zend_message->setBody($message->getContent()); $email = new EmailStructure(); $email->to = $message->to; $email->from = $message->from; if (isset($message->cc)) { $email->cc = $message->cc; } $email->subject = $message->subject; //$email->body["html"] = $message->getContent(); $rawmessage .= $zend_message->toString(); // Create messages $channel_message = new ChannelMessage($this->w); $channel_message->channel_id = $this->channel_id; $channel_message->message_type = "email"; // $channel_message->attachment_id = $attachment_id; $channel_message->is_processed = 0; $channel_message->insert(); // Save raw email $attachment_id = $this->w->File->saveFileContent($channel_message, $rawmessage, str_replace(".", "", microtime()) . ".txt", "channel_email_raw", "text/plain"); if ($message->isMultipart()) { foreach (new RecursiveIteratorIterator($message) as $part) { try { $contentType = strtok($part->contentType, ';'); switch ($contentType) { case "text/plain": $email->body["plain"] = trim($part->__toString()); break; case "text/html": $email->body["html"] = trim($part->__toString()); break; default: // Is probably an attachment so just save it $transferEncoding = $part->getHeader("Content-Transfer-Encoding")->getFieldValue("transferEncoding"); $content_type_header = $part->getHeader("Content-Type"); // Name is stored under "parameters" in an array $nameArray = $content_type_header->getParameters(); $this->w->File->saveFileContent($channel_message, $transferEncoding == "base64" ? base64_decode(trim($part->__toString())) : trim($part->__toString()), !empty($nameArray["name"]) ? $nameArray["name"] : "attachment" . time(), "channel_email_attachment", $contentType); } } catch (Zend_Mail_Exception $e) { // Ignore } } } $attachment_id = $this->w->File->saveFileContent($channel_message, serialize($email), "email.txt", "channel_email_raw", "text/plain"); } } else { $this->w->Log->info("No new messages found"); } } }
/** * 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); }
/** * pack tagged array of data to SendMessage format * * * @param Array $mailArray * * return array of data that will be converted to * send message * * @return Array */ public function packData($mailArray) { $mimeMail = new Message(); $textPart = $this->packText($mailArray['text'], $mailArray['header']['content-type']); unset($mailArray['header']['content-type']); $attachmentParts = $this->packAttachments($mailArray['link']); if (count($attachmentParts)) { $mimeMail->addPart($textPart); foreach ($attachmentParts as $part) { $mimeMail->addPart($part); } } else { $mimeMail->addPart($textPart); } $returnMail = new SendMessage(); $returnMail->setBody($mimeMail); foreach ($mailArray['header'] as $header => $value) { switch ($header) { case 'references': if (is_array($value)) { $res = ''; foreach ($value as $reference) { $res .= $reference . ' '; } } elseif (is_string($value)) { $res = $value; } else { continue; } $headers = $returnMail->getHeaders(); $headers->addHeaderLine($header, $res); $returnMail->setHeaders($headers); break; case 'bcc': $returnMail->addBcc($value); break; case 'cc': $returnMail->addCc($value); break; case 'to': $returnMail->addTo($value); break; case 'from': $returnMail->addFrom($value); break; case 'reply-to': $returnMail->addReplyTo($value); break; case 'subject': $returnMail->setSubject($value); break; default: $headers = $returnMail->getHeaders(); $headers->addHeaderLine($header, $value); $returnMail->setHeaders($headers); break; } } return $returnMail; }