⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smtpservertest.java

📁 java mail,java mailjava mailjava mailjava mail
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        String userName = "test_user_smtp";        m_usersRepository.addUser(userName, "pwd");        smtpProtocol.setSender("");        smtpProtocol.sendCommand("AUTH PLAIN");        smtpProtocol.sendCommand(Base64.encodeAsString("\0"+userName+"\0pwd\0"));        assertEquals("authenticated", 235, smtpProtocol.getReplyCode());        smtpProtocol.addRecipient("mail@sample.com");        assertEquals("expected error", 503, smtpProtocol.getReplyCode());                smtpProtocol.quit();    }    public void testNoRecepientSpecified() throws Exception {        finishSetUp(m_testConfiguration);        SMTPClient smtpProtocol = new SMTPClient();        smtpProtocol.connect("127.0.0.1", m_smtpListenerPort);        smtpProtocol.sendCommand("ehlo "+InetAddress.getLocalHost());        smtpProtocol.setSender("mail@sample.com");        // left out for test smtpProtocol.rcpt(new Address("mail@localhost"));        smtpProtocol.sendShortMessageData("Subject: test\r\n\r\nTest body\r\n");        assertTrue("sending succeeded without recepient", SMTPReply.isNegativePermanent(smtpProtocol.getReplyCode()));        smtpProtocol.quit();        // mail was propagated by SMTPServer        assertNull("no mail received by mail server", m_mailServer.getLastMail());    }    public void testMultipleMailsAndRset() throws Exception {        finishSetUp(m_testConfiguration);        SMTPClient smtpProtocol = new SMTPClient();        smtpProtocol.connect("127.0.0.1", m_smtpListenerPort);        smtpProtocol.sendCommand("ehlo "+InetAddress.getLocalHost());        smtpProtocol.setSender("mail@sample.com");                smtpProtocol.reset();                smtpProtocol.setSender("mail@sample.com");        smtpProtocol.quit();        // mail was propagated by SMTPServer        assertNull("no mail received by mail server", m_mailServer.getLastMail());    }    public void testRelayingDenied() throws Exception {        m_testConfiguration.setAuthorizedAddresses("128.0.0.1/8");        finishSetUp(m_testConfiguration);        SMTPClient smtpProtocol = new SMTPClient();        smtpProtocol.connect("127.0.0.1", m_smtpListenerPort);        smtpProtocol.sendCommand("ehlo "+InetAddress.getLocalHost());        smtpProtocol.setSender("mail@sample.com");        smtpProtocol.addRecipient("maila@sample.com");        assertEquals("expected 550 error", 550, smtpProtocol.getReplyCode());    }    public void testHandleAnnouncedMessageSizeLimitExceeded() throws Exception {        m_testConfiguration.setMaxMessageSize(1); // set message limit to 1kb        finishSetUp(m_testConfiguration);        SMTPClient smtpProtocol = new SMTPClient();        smtpProtocol.connect("127.0.0.1", m_smtpListenerPort);        smtpProtocol.sendCommand("ehlo "+InetAddress.getLocalHost());        smtpProtocol.sendCommand("MAIL FROM:<mail@localhost> SIZE=1025", null);        assertEquals("expected error: max msg size exceeded", 552, smtpProtocol.getReplyCode());        smtpProtocol.addRecipient("mail@localhost");        assertEquals("expected error", 503, smtpProtocol.getReplyCode());    }    public void testHandleMessageSizeLimitExceeded() throws Exception {        m_testConfiguration.setMaxMessageSize(1); // set message limit to 1kb         finishSetUp(m_testConfiguration);        SMTPClient smtpProtocol = new SMTPClient();        smtpProtocol.connect("127.0.0.1", m_smtpListenerPort);        smtpProtocol.sendCommand("ehlo "+InetAddress.getLocalHost());        smtpProtocol.setSender("mail@localhost");        smtpProtocol.addRecipient("mail@localhost");        Writer wr = smtpProtocol.sendMessageData();        // create Body with more than 1kb . 502        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100\r\n");        // second line        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("123456781012345678201\r\n"); // 521 + CRLF = 523 + 502 => 1025        wr.close();                assertFalse(smtpProtocol.completePendingCommand());        assertEquals("expected 552 error", 552, smtpProtocol.getReplyCode());    }    public void testHandleMessageSizeLimitRespected() throws Exception {        m_testConfiguration.setMaxMessageSize(1); // set message limit to 1kb         finishSetUp(m_testConfiguration);        SMTPClient smtpProtocol = new SMTPClient();        smtpProtocol.connect("127.0.0.1", m_smtpListenerPort);        smtpProtocol.sendCommand("ehlo "+InetAddress.getLocalHost());        smtpProtocol.setSender("mail@localhost");        smtpProtocol.addRecipient("mail@localhost");        Writer wr = smtpProtocol.sendMessageData();        // create Body with less than 1kb        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012345678301234567840123456785012345678601234567870123456788012345678901234567100");        wr.write("1234567810123456782012\r\n"); // 1022 + CRLF = 1024        wr.close();                assertTrue(smtpProtocol.completePendingCommand());        assertEquals("expected 250 ok", 250, smtpProtocol.getReplyCode());    }    /*      What we want to see is that for a given connection limit and a      given backlog, that connection limit requests are handled, and      that up to the backlog number of connections are queued.  More      connections than that would eventually error out (unless space      connections than that should error out until space opens up in      the queue.      For example:        # telnet localhost <m_smtpListenPort>        Trying 127.0.0.1...        telnet: Unable to connect to remote host: Connection refused      is the immediate response if the backlog is full.    */    public void testConnectionLimitExceeded() throws Exception {        final int acceptLimit = 1;        final int backlog = 1;        m_testConfiguration.setConnectionLimit(acceptLimit);   // allow no more than <acceptLimit> connection(s) in the service        m_testConfiguration.setConnectionBacklog(backlog);     // allow <backlog> additional connection(s) in the queue        finishSetUp(m_testConfiguration);        final SMTPClient[] client = new SMTPClient[acceptLimit];        for (int i = 0; i < client.length; i++) {             client[i] = new SMTPClient(); // should connect to worker             try {                client[i].connect("127.0.0.1", m_smtpListenerPort);            } catch (Exception _) {            }            assertTrue("client #" + (i+1) + " established", client[i].isConnected());        }        // Cannot use SMTPClient.  It appears that even though the        // client's socket is established, since the client won't be        // able to connect to the protocol handler, the connect call        // hangs.        // Different TCP/IP stacks may provide a "grace" margin above        // and beyond the specified backlog.  So we won't try to be        // precise.  Instead we will compute some upper limit, loop        // until we get a connection error (or hit the limit), and        // then test for the expected behavior.        //        // See: http://www.phrack.org/archives/48/P48-13        final Socket connection[] = new Socket[Math.max(((backlog * 3) / 2) + 1, backlog + 3)];        final java.net.SocketAddress server = new java.net.InetSocketAddress("localhost", m_smtpListenerPort);        for (int i = 0; i < connection.length; i++) {            connection[i] = new Socket();            try {                connection[i].connect(server, 1000);            } catch (Exception _) {                assertTrue("Accepted connections " + i + " did not meet or exceed backlog of " + backlog + ".", i >= backlog);                connection[i] = null; // didn't open, so don't try to close later                break; // OK to fail, since we've at least reached the backlog                      }            assertTrue("connection #" + (i+1) + " established", connection[i].isConnected());        }                try {            final Socket shouldFail = new Socket();            shouldFail.connect(server, 1000);            fail("connection # " + (client.length + connection.length + 1) + " did not fail.");                    } catch (Exception _) {              }                client[0].quit();        client[0].disconnect();                  Thread.sleep(100);        // now should be able to connect (backlog)        try {            final Socket shouldWork = new Socket();            shouldWork.connect(server, 1000);            assertTrue("Additional connection established after close.", shouldWork.isConnected());            shouldWork.close();        } catch (Exception e) {            fail("Could not establish additional connection after close." + e.getMessage());        }                // close the pending connections first, so that the server doesn't see them        for (int i = 0; i < connection.length; i++) if (connection[i] != null) connection[i].close();                // close the remaining clients        for (int i = 1; i < client.length; i++) {            client[i].quit();            client[i].disconnect();        }    }        // RemoteDelivery tests.        InMemorySpoolRepository outgoingSpool;    private MockServiceManager m_serviceManager;        private Properties getStandardParameters() {        Properties parameters = new Properties();        parameters.put("delayTime", "500 msec, 500 msec, 500 msec"); // msec, sec, minute, hour        parameters.put("maxRetries", "3");        parameters.put("deliveryThreads", "1");        parameters.put("debug", "true");        parameters.put("sendpartial", "false");        parameters.put("bounceProcessor", "bounce");        parameters.put("outgoing", "mocked://outgoing/");        return parameters;    }        /**     * This has been created to test javamail 1.4 introduced bug.     * http://issues.apache.org/jira/browse/JAMES-490     */    public void testDeliveryToSelfWithGatewayAndBind() throws Exception {        finishSetUp(m_testConfiguration);        outgoingSpool = new InMemorySpoolRepository();        ((MockStore) m_serviceManager.lookup(Store.ROLE)).add("outgoing", outgoingSpool);                RemoteDelivery rd = new RemoteDelivery();                MockMailContext mmc = new MockMailContext();        mmc.setAttribute(Constants.AVALON_COMPONENT_MANAGER,m_serviceManager);        mmc.setAttribute(Constants.HELLO_NAME,"localhost");        MockMailetConfig mci = new MockMailetConfig("Test",mmc,getStandardParameters());        mci.setProperty("bind", "127.0.0.1");        mci.setProperty("gateway","127.0.0.1");        mci.setProperty("gatewayPort",""+m_smtpListenerPort);        rd.init(mci);        String sources = "Content-Type: text/plain;\r\nSubject: test\r\n\r\nBody";        String sender = "test@localhost";        String recipient = "test@localhost";        MimeMessage mm = new MimeMessage(Session.getDefaultInstance(new Properties()),new ByteArrayInputStream(sources.getBytes()));        MailImpl mail = new MailImpl("name",new MailAddress(sender),Arrays.asList(new MailAddress[] {new MailAddress(recipient)}),mm);                rd.service(mail);                while (outgoingSpool.size() > 0) {            Thread.sleep(1000);        }        verifyLastMail(sender, recipient, null);                assertEquals(((String) mm.getContent()).trim(),((String) ((MimeMessage) m_mailServer.getLastMail()[2]).getContent()).trim());                mail.dispose();    }        /**     * This is useful code to run tests on javamail bugs      * http://issues.apache.org/jira/browse/JAMES-52     *      * This      * @throws Exception     */    public void test8bitmimeFromStream() throws Exception {        finishSetUp(m_testConfiguration);        outgoingSpool = new InMemorySpoolRepository();        ((MockStore) m_serviceManager.lookup(Store.ROLE)).add("outgoing", outgoingSpool);                RemoteDelivery rd = new RemoteDelivery();                MockMailContext mmc = new MockMailContext();        mmc.setAttribute(Constants.AVALON_COMPONENT_MANAGER,m_serviceManager);        mmc.setAttribute(Constants.HELLO_NAME,"localhost");        MockMailetConfig mci = new MockMailetConfig("Test",mmc,getStandardParameters());        mci.setProperty("gateway","127.0.0.1");        mci.setProperty("gatewayPort",""+m_smtpListenerPort);        rd.init(mci);                String sources = "Content-Type: text/plain;\r\nContent-Transfer-Encoding: quoted-printable\r\nSubject: test\r\n\r\nBody=80\r\n";        //String sources = "Content-Type: text/plain; charset=iso-8859-15\r\nContent-Transfer-Encoding: quoted-printable\r\nSubject: test\r\n\r\nBody=80\r\n";        //String sources = "Content-Type: text/plain; charset=iso-8859-15\r\nContent-Transfer-Encoding: 8bit\r\nSubject: test\r\n\r\nBody\u20AC\r\n";        String sender = "test@localhost";        String recipient = "test@localhost";        MimeMessage mm = new MimeMessage(Session.getDefaultInstance(new Properties()),new ByteArrayInputStream(sources.getBytes()));        MailImpl mail = new MailImpl("name",new MailAddress(sender),Arrays.asList(new MailAddress[] {new MailAddress(recipient)}),mm);                rd.service(mail);                while (outgoingSpool.size() > 0) {            Thread.sleep(1000);        }        // verifyLastMail(sender, recipient, mm);        verifyLastMail(sender, recipient, null);                // THIS WOULD FAIL BECAUSE OF THE JAVAMAIL BUG        // assertEquals(mm.getContent(),((MimeMessage) m_mailServer.getLastMail()[2]).getContent());                mail.dispose();    }        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -